当我使用Visual Studio(MSVC)并使用strcat
函数时,我收到错误
错误C4996:'strcat':此函数或变量可能不安全。请考虑使用strcat_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。
如果我要创建一个像GCC
这样的编译器的项目,是否有办法检测是否需要这些safe
函数,例如MSVC宏?
答案 0 :(得分:1)
通常我会使用#ifdef _CRT_INSECURE_DEPRECATE
。它是Visual用来首先添加这些警告的宏,所以如果你正在编译一个提供警告的Visual版本,它将被定义。
答案 1 :(得分:1)
您可以对跨平台代码使用条件编译。如:
#ifdef WIN
strcat_s(...
#else
strcat(...
#endif
MSVC编译器检测到已被确认为已弃用的函数的此类调用,并在级别3上生成警告C4996。因此,只需使用此级别(或更多)进行编译并查看警告。