C++ 添加#include<;向量>;到MFC项目
我正在尝试将C++ 添加#include<;向量>;到MFC项目,c++,stl,mfc,C++,Stl,Mfc,我正在尝试将#include添加到我的MFC项目中。它可以编译,但我得到以下警告(只是其中一些警告,实际列表要长得多): 我可以通过这样做让它安静下来: #pragma warning(push) #pragma warning(disable: 4995) #include <vector> #pragma warning(pop) #pragma警告(推送) #杂注警告(禁用:4995) #包括 #布拉格警告(pop) 但我很好奇为什么图书馆会发出这些警告?如果有更好的方法来
#include
添加到我的MFC项目中。它可以编译,但我得到以下警告(只是其中一些警告,实际列表要长得多):
我可以通过这样做让它安静下来:
#pragma warning(push)
#pragma warning(disable: 4995)
#include <vector>
#pragma warning(pop)
#pragma警告(推送)
#杂注警告(禁用:4995)
#包括
#布拉格警告(pop)
但我很好奇为什么图书馆会发出这些警告?如果有更好的方法来解决这个问题,而不是抑制警告?此警告表示已标记为过时的功能,在未来的版本中可能不再支持该功能 因此,您可以有两种方法来处理它:第一种是您使用的方式,用pragma deprecated标记它,或者您可以使用它们的安全版本 例如,Strcpy有一个名为StringCchCopy/StringCbCopy的对应函数,get有get\s。您可以从MSDN中找到它们
祝你好运 尝试在
stdafx.h
中的任何包含之前添加#define STRSAFE_NO_DEPRECATE
。或者将其添加到项目设置中的“定义”列表中。至少从2010年开始,我认为这是不必要的。看起来您正在使用VS2008。MS希望您使用上述功能的“安全”
版本(strcat\u s
,sprintf\u s
等)。我发现他们的标准库在默认情况下不这样做很奇怪。你没有混合其他VS版本的标准库,对吗?@WhozCraig:我想我没有。我将尝试添加#定义STRSAFE_NO_DEPRECATE
。问题在于知道stdafx.h的哪个include首先被调用。它们几乎存在于每个.cpp
文件中。我的意思是在stdafx.h
中包含的任何其他包含之前,将其放入stdafx.h
,以防不清楚。正如我所说的,只需编辑项目设置,并在C/C++设置下的预处理器定义中设置(调试和发布构建配置)可能会更容易。@WhozCraig:哦,我明白你的意思了。虽然这与我的警告类似,但在全球范围内。因此,我很好奇如何才能得到一个新版本的std::vector
库,它使用了微软建议的所有安全API,并带有该警告?它不会抑制所有的反对意见,只会抑制strsafe
库周围的反对意见。其他不相关的弃用仍将被标记。就我个人而言,我至少要升级到VS2010或VS2013。谢谢。但我不是在写图书馆。这些函数来自std::vector
。如果不使用std::vector
,此警告会消失吗?
#pragma warning(push)
#pragma warning(disable: 4995)
#include <vector>
#pragma warning(pop)