C++ 在VC+中查找导致警告4503的代码+;

C++ 在VC+中查找导致警告4503的代码+;,c++,debugging,visual-studio-2012,warnings,pragma,C++,Debugging,Visual Studio 2012,Warnings,Pragma,我正试图在一个大的代码库中找到这个大警告的来源: C:\Program Files (x86)\Microsoft Visual Studio 12.\VC\INCLUDE\xmemory0(592) : warning C4503: 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::_Insert_at' : decorated name length exceeded, name was trun

我正试图在一个大的代码库中找到这个大警告的来源:

C:\Program Files (x86)\Microsoft Visual Studio 12.\VC\INCLUDE\xmemory0(592) : 
warning C4503: 
'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::_Insert_at' : decorated name length exceeded, name was truncated
        with
        [
            _Kty=epmem_node_id,
            _Ty=std::map<std::string,std::list<std::string,std::allocator<std::string>>,std::less<std::string>,std::allocator<std::pair<const std::string,std::list<std::string,std::allocator<std::string>>>>>,
            _Pr=std::less<epmem_node_id>,
            _Alloc=std::allocator<std::pair<const epmem_node_id,std::map<std::string,std::list<std::string,std::allocator<std::string>>,std::less<std::string>, std::allocator<std::pair<const std::string,std::list<std::string,std::allocator<std::string>>>>>>>
        ]
但是,我一直把它放在代码库中,警告仍然会弹出。不幸的是,该警告没有指定问题所在的行、文件甚至类或变量,因此我完全不知所措。我尝试使用
dumpbin/ALL
,但是当我搜索文件时,我没有在任何地方找到
\u Tree


如何在我的代码库中找到此警告的来源?

我的问题是如何找到导致问题的代码行,但这实际上并不能解决我的问题。因为有问题的代码涉及模板,所以
cl
警告的修饰名称是在翻译单元中的其余代码被处理后生成的,因此我不能用
警告(推)
/
警告(pop)
对包围任何给定的代码段


我的解决方案是将
#pragma warning(disable:4503)
放在文件的末尾(我把它放在include-guard的
#endif
前面)。这将使从文件中使用tempaltes的结构生成的所有修饰名称的警告静音。
警告(…)
杂注的范围仅限于当前翻译单元,因此不会影响任何其他文件。

这是完整的错误日志输出吗?没有什么比这更能说明问题在代码中的位置了?可能是这样的陈述:
map\u obj[string\u obj]=list\u obj将#pragma放在何处对于模板来说非常不直观,模板扩展发生得非常晚。当你把它放在源代码文件的末尾:)@JoachimPileborg是的,这是完整的日志。没有位置指示。当然,当它位于.cpp文件的末尾时,不会弹出任何内容。这也不会影响项目中的任何其他文件。这很容易,不是吗:)
#pragma warning(push)
#pragma warning(disable:4503)
... code here
#pragma warning(pop)