VC.STL Newsgroup Good Questions(三)

系统 1540 0

VC.STL Newsgroup Good Questions( )

       声明 Container 对象时有许多 C 4786 编译警告, Why?

Article last modified on 2002-5-29

----------------------------------------------------------------

The information in this article applies to:

-         Microsoft Visual C++, 32-bit Editions, version 6.0, SP5

----------------------------------------------------------------

 

Question:

下面的代码编译时报告了一大堆愚蠢的 C4786 编译警告,足有十四个:

f:\program files\microsoft visual studio\vc98\include\list(125) : warning C4786: '?$reverse_bidirectional_iterator@Viterator@?$list@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@AAV43@PAV43@H' : identifier was truncated to '255' characters in the browser information         E:\ \Exercise4\Exercise4.cpp(195) : see reference to class template instantiation 'std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >' being compiled

 

代码如下:
#include <list>

#include <string>

using namespace std;

list<string> myList;

void main()

{

}

 

再比如, map<string,int> myMap

 

Answer:

这个警告的意思就是说, list<string> 的构造生成的 Symbols 太长了,超过了255个字符。

你其实不用理会这个警告,因为它只会影响到 Debugger ,而不会影响到真实的代码。实际上,如果你编译一个 Release 版本的话,就会发现这个警告已经完全消失了。

消除这个警告可能有一点难度,因为这属于预处理器的行为。

一般建议你这么做:

#pragma warning(disable : 4786)

#include <list>

#include <string>

 

注意这个 pragma 声明一定要放在 stl 头文件之前!否则不起作用!

 

这个 pragma 也不是总能够发生效力的!有时候,并不能消除所有的这种 C4786 警告。

详情参见:

              
                
                  http://support.microsoft.com/support/kb/articles/Q167/3/55.ASP
                
                
                
              
            

微软声称,将在 Microsoft Visual C++ .NET 中解决这个问题。

 

(To be Continued)

 

Written by zhengyun@tomosoft.com

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12675


VC.STL Newsgroup Good Questions(三)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论