gpt4 book ai didi

c++ - STL - 以下代码的问题是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:59 29 4
gpt4 key购买 nike

#include "stdafx.h"
#include <string>
#include <map>
using namespace std;

class NiftyEmailProgram {
private:
typedef map<string, string> NicknameMap;
NicknameMap nicknames;

public:
void ShowEmailAddress(const string& nickname) const
{
NicknameMap::const_iterator i = nicknames.find(nickname);

if ( i != nicknames.end() )
{
}
}

};

int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}

当我在VC6.0中编译上面的代码时,我看到了无数的警告。如果我使用警告级别 4 并将所有警告视为错误,则 STLFilt 的输出错误如下:

Compiling...
t3.cpp
c:\devstudio_6.0\vc98\include\xtree(118): error C2220: warning treated as error - no object file generated
c:\devstudio_6.0\vc98\include\map(46): see reference to class template instantiation 'map<string,string>' being compiled
C:\TEMP\t3\t3.cpp(12): see reference to class template instantiation 'map<string,string>' being compiled
Error executing cl.exe.


t3.exe - 1 error(s), 26 warning(s)
Tool returned code: 0

现在,这段代码有什么问题,我该如何解决?

谢谢

最佳答案

尝试发布未处理的警告。

但是,我也记得我从 <xtree> 收到了一些 4 级警告在 <map> ,可以安全地忽略它(IIRC 是 C4702 ,这是无害的)。

为了避免警告,我将 STL #include 放在一边一些合适的#pragma warning指令(包含在正确的 #ifdef 中,以便仅在 MSVC++ 上考虑它们,感谢 @Alexandre C. 提醒我):

#ifdef _MSC_VER
//Disable the C4702 warning for the following headers
#pragma warning(push)
#pragma warning(disable:4702)
#endif // _MSC_VER
//map STL container
#include <map>
//list STL container
#include <list>
//vector STL container
#include <vector>
#ifdef _MSC_VER
#pragma warning(pop)
#endif

您也可以在该部分中将警告级别简单地降低到 3(或更低):

#ifdef _MSC_VER
// Lower the warning level to 3 just for this section
#pragma warning(push, 3)
#endif
//map STL container
#include <map>
//list STL container
#include <list>
//vector STL container
#include <vector>
#ifdef _MSC_VER
#pragma warning(pop)
#endif // _MSC_VER

有关详细信息,请参阅 documentation of #pragma warning .

关于c++ - STL - 以下代码的问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474431/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com