【发布时间】:2010-10-25 06:21:01
【问题描述】:
我收到此警告,但所有功能都正常工作。
这究竟意味着什么?
'strcpy': This function or variable may be unsafe.
Consider using strcpy_s instead. To disable deprecation,
use _CRT_SECURE_NO_WARNINGS. See online help for details.
【问题讨论】:
-
@GMan:编译器不会发出“只是为了好玩”的警告。这些警告是有原因的,忽略它们通常是一个坏主意。如果编译器已经告诉你一个问题,你应该认真听它。在这种情况下,它是关于潜在安全问题(或只是潜在的崩溃源)的警告,并要求您改用更健全的功能。
-
@DarkDust:除了我永远不会(!)使用
strcpy(或strcpy_s)这一事实之外,使用普通的C函数非常好,并且使用“安全” CRT 变体只给人一种安全的错觉,仅此而已。更重要的是,它们不便携。 -
@DarkDust:我相信这种警告对于通常不太关心字符串边界的初学者或懒惰的程序员很有用。如果你确定你有一个以 NULL 结尾的字符串(不是来自用户输入),我不明白为什么我们应该避免使用完美工作的函数。
-
@ereOn:许多 C 程序员(例如 Torvalds)倾向于避免使用所有 C 字符串函数,因为它们是不必要且低效的:改用
memcpy。 -
@DarkDust:哦,我很清楚许多警告很重要。但并非全部都是,这肯定是一个该死的烦人警告。有时,不管你信不信,程序员以完全安全的方式使用这些函数。 @Gabe:因为 CERT 以某种方式定义了标准……?
标签: c++ visual-c++