c++ - 将 #include <vector> 添加到 MFC 项目时出现警告 C4995

标签 c++ stl mfc

我正在尝试添加 #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/

相关文章:

c++ - STL::set 的随机访问和更新

c++ - 是否可以将虚函数和函数对象混合使用 std 算法?

C++ STL 列出两个结构交叉引用

c++ - 在 C++ 中使用 Shell 扩展在不使用上下文菜单的情况下实现拖放

c++ - 交叉引用类对象

c++ - 从类级放置新重载中访问成员

c++ - 无法在 Eclipse Juno 8.1.1 CDT C++ 项目中添加静态库

c++ - 围绕一个公共(public)点旋转四条线

c++ - MFC中如何将BYTE数组转换为CString?

c++ - 无法在 MFC Windowless Activex 中获取 Cwnd 类的句柄?