屏蔽掉warning 4786

本文介绍了解决Visual C++编译器中STL使用导致的4786号警告的方法。此警告源于VC对标识符长度的限制,默认情况下超过256字节即触发警告。文中提供了一种简单的解决方案,通过预编译指令来禁用这些警告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写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号警告信息作为一个错误。 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值