vic*_*ico 45 c++ warnings visual-c++ visual-studio-2012
我在我的简单MFC窗口应用程序中编译错误,该应用程序由向导生成,包含几行代码:
错误C4996:'strncpy':此函数或变量可能不安全.请考虑使用strncpy_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.
我设置 Configuration Properties>>C/C++>>Preporocessor>>Preprocessor Definitions>> _CRT_NONSTDC_NO_WARNINGS
但这没有帮助.我有另一个非常接近的项目,在这个地方只生成警告,它没有_CRT_NONSTDC_NO_WARNINGS
定义.
只有项目之间的差异是向导中的几个不同选项.
为什么_CRT_NONSTDC_NO_WARNINGS对第一个项目没有帮助,为什么第二个项目在没有这个定义的情况下编译没有问题?
Bal*_*alu 56
加入
配置属性>> C/C++ >>预处理器>>预处理器定义>> _CRT_SECURE_NO_WARNINGS
kmc*_*mee 23
如果您在Visual Studio 2012或更高版本中,则在"属性页"下有一个"SDL检查" - >"C/C++" - >"常规"
其他安全开发生命周期(SDL)建议检查; 包括启用其他安全代码生成功能和额外的安全相关警告作为错误.
它默认为YES - 出于某种原因,IE应该使用strncpy的安全版本.如果将此更改为NO,则在使用不安全版本时不会出现错误.
小智 10
为了快速修复或测试,我发现#define _CRT_SECURE_NO_WARNINGS
在所有 #include 之前添加到文件顶部很方便
#define _CRT_SECURE_NO_WARNINGS
#include ...
int main(){
//...
}
Run Code Online (Sandbox Code Playgroud)
小智 8
添加_CRT_SECURE_NO_WARNINGS
到项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理器定义对我不起作用,不知道为什么。
以下提示有效:在 stdafx.h 文件中,请添加
#define _CRT_SECURE_NO_DEPRECATE
Run Code Online (Sandbox Code Playgroud)
在包含其他头文件之前。
Visual Studio 2019与CMake
将以下内容添加到CMakeLists.txt
:
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
Run Code Online (Sandbox Code Playgroud)