您的位置:首页 > 其它

屏蔽掉warning 4786

2011-06-19 14:48 323 查看
最近写vector和map相关的程序时,经常遇到编译无错误但是有警告的情况。警告中总是含有一个数字 warning 4786。

原因:
不是STL的问题也不是coder的问题,而是VC的一个bug。
VC认为,C/C++中的标示符应该小于256字节。如果大于等于这个长度,那么vc就会认为长度太长了,该给出警告了。
但是实际上,STL中很容易出现大于256字节的标识符,这并不是错误。

解决:
办法有很多,我试出来OK的是这个:
把下面这段话加入头文件中(比如我加的是StdAfx.h这个头文件)
#ifdef WIN32
#pragma warning (disable: 4514 4786)
#endif

另外,上面的命令还可以扩展:
once:只显示一次(警告/错误等)消息
default:重置编译器的警告行为到默认状态
1,2,3,4:四个警告级别
disable:禁止指定的警告信息
error:将指定的警告信息作为错误报告

比如
#pragma warning(disable:4786)// 不显示4507和34号警告信息
#pragma warning(once:4786)// 4385号警告信息仅报告一次
#pragma warning(error:4786)// 把164号警告信息作为一个错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: