C ++ - 检查是否需要安全功能

时间:2014-02-18 09:19:04

标签: c visual-c++

当我使用Visual Studio(MSVC)并使用strcat函数时,我收到错误

  

错误C4996:'strcat':此函数或变量可能不安全。请考虑使用strcat_s。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。

如果我要创建一个像GCC这样的编译器的项目,是否有办法检测是否需要这些safe函数,例如MSVC宏?

2 个答案:

答案 0 :(得分:1)

通常我会使用#ifdef _CRT_INSECURE_DEPRECATE。它是Visual用来首先添加这些警告的宏,所以如果你正在编译一个提供警告的Visual版本,它将被定义。

答案 1 :(得分:1)

您可以对跨平台代码使用条件编译。如:

#ifdef WIN
strcat_s(...
#else
strcat(...
#endif

MSVC编译器检测到已被确认为已弃用的函数的此类调用,并在级别3上生成警告C4996。因此,只需使用此级别(或更多)进行编译并查看警告。