屏蔽掉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号警告信息作为一个错误。
原因:
不是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号警告信息作为一个错误。
相关文章推荐
- 在VC下加入这条语句,屏蔽4786警告 #pragma warning (disable:4786)
- 使用map后,屏蔽warning 4786
- tensorflow中屏蔽warning
- 屏蔽vc6使用STL容器时的warning
- #pragma warning(disable 4786)
- 关于#pragma comment(lib,"ws2_32.lib")和 #pragma warning(disable : 4786)
- #pragma warning (disable : 4786)
- VC6下屏蔽4786警告方法
- tensorFlow测试及屏蔽warning信息
- 屏蔽VS警告warning
- 屏蔽warning一例
- #pragma warning (disable : 4786)
- C++写#pragma warning(disable 4786)的作用
- #pragma warning(disable:4786)
- 屏蔽不显示VS警告warning
- #pragma warning(disable 4786)
- #pragma warning(disable:4786)
- #pragma warning(disable 4786)
- 在a3平台下以广告主身份进入后,启用,屏蔽代理商时后台出现以下warning
- 资料整理: #pragma warning(disable : 4786) 在vs6中失效的原因