向 MFC 项目添加 #include 时的警告 C4995 <vector>

Warnings C4995 when adding #include <vector> to MFC project

本文关键字:C4995 gt lt 警告 vector 项目 MFC 添加 #include      更新时间:2023-10-16

我正在尝试将#include <vector>添加到我的MFC项目中。它编译了,但我收到了以下警告(只是其中的一些,实际列表要长得多):

1>c:program files (x86)microsoft visual studio 9.0vcincludecstdio(49) : warning C4995: 'gets': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecstdio(53) : warning C4995: 'sprintf': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecstdio(56) : warning C4995: 'vsprintf': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecstring(22) : warning C4995: 'strcat': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecstring(23) : warning C4995: 'strcpy': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecwchar(36) : warning C4995: 'swprintf': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecwchar(37) : warning C4995: 'vswprintf': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecwchar(39) : warning C4995: 'wcscat': name was marked as #pragma deprecated
1>c:program files (x86)microsoft visual studio 9.0vcincludecwchar(41) : warning C4995: 'wcscpy': name was marked as #pragma deprecated

我可以这样做让它静音:

#pragma warning(push)
#pragma warning(disable: 4995)
#include <vector>
#pragma warning(pop)

但我很好奇为什么图书馆会发出这些警告?如果有比抑制警告更好的方法来解决这个问题呢?

此警告表示已标记为过时的函数,将来的版本可能不再支持该函数。

因此,您可以有两种方法来处理它:第一种是使用方式,用pragma deprecated标记它,或者您可以使用它们的安全版本。

例如,Strcpy有一个名为StringCchCopy/StringCbCopy的相应函数,而get有get_s。你可以从MSDN中找到它们。

祝你好运。:)