Qt 解决_CRT_SECURE_NO_WARNINGS及_SCL_SECURE_NO_WARNINGS的问题


简述:关于 VS20XX 中出现 _CRT_SECURE_NO_WARNINGS 及 _SCL_SECURE_NO_WARNINGS 的安全警告处理。


1、简单介绍.pro跨平台(Win32/Linux)的写法


win32 {
    #remove safe warning
    win32:DEFINES += _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS
    LIBS += -lGLU32 -lpthreadVC2
    #Forbid C4819 and C4244 Warning
    QMAKE_CXXFLAGS += /wd"4819"\
                    /wd"4244"
}

unix {
    LIBS += -lGLU
}

即写法如下:

win32 {
    #设置WIndows下的连接库,以及Visual C++20XX编译器的的设置选项
}

unix {
    #原理和win32一样
}


2、 Qt 的解决方法


在win32中,win32:DEFINES+=_CRT_SECURE_NO_WARNINGS,主要就是添加_CRT_SECURE_NO_WARNINGS定义,避免VC编译器关于fopen等应使用fopen_s的安全警告,win32:DEFINES+=_SCL_SECURE_NO_WARNINGS同理QMAKE_CXXFLAGS+=/wd"4819"的作用就是屏蔽C4819警告,需要注意的是,在.pro文件中定义的均为全局配置。


3、VS20XX的解决方法


问题:1>c:\program files (x86)\microsoft visual studio11.0\vc\include\xutility(2176): error C4996: 'std::_Copy_impl': Function callwith parameters that may be unsafe - this call relies on the caller to checkthat the passed values are correct. To disable this warning,use-D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'CheckedIterators'


问题:Error 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


解决方法:

加入预处理器(项目属性----C/C++----预处理----预处理器定义):

_CRT_SECURE_NO_WARNINGS

_SCL_SECURE_NO_WARNINGS





你可能感兴趣的:(Qt,C/C++,mfc编程)