我正在尝试添加 #include <vector>
到我的 MFC 项目。它编译,但我收到以下警告(只是其中的一些,实际列表要长得多):
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(49) : warning C4995: 'gets': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(53) : warning C4995: 'sprintf': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstdio(56) : warning C4995: 'vsprintf': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(22) : warning C4995: 'strcat': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cstring(23) : warning C4995: 'strcpy': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cwchar(36) : warning C4995: 'swprintf': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cwchar(37) : warning C4995: 'vswprintf': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cwchar(39) : warning C4995: 'wcscat': name was marked as #pragma deprecated
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\cwchar(41) : warning C4995: 'wcscpy': name was marked as #pragma deprecated
我可以通过这样做使它静音:
#pragma warning(push)
#pragma warning(disable: 4995)
#include <vector>
#pragma warning(pop)
但我很想知道为什么库会导致这些警告?除了抑制警告之外,是否有更好的方法来解决这个问题?
最佳答案
此警告表示该功能已被标记为过时, future 版本可能不再支持该功能。
所以你可以有两种方法来处理它:第一种是你使用的方式,用pragma deprecated标记它,或者你可以使用他们的安全版本。
比如strcpy有对应的函数叫StringCchCopy/StringCbCopy,get有get_s.您可以从 MSDN 中找到它们。
祝你好运。 :)
关于c++ - 将 #include <vector> 添加到 MFC 项目时出现警告 C4995,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247195/