1
當您收到類似警告時,是否有巧妙的方式在代碼中查找相關位置?看起來,唯一顯示的行號是指標準標題,但不是實際的代碼。我必須補充說,這個項目非常龐大,有數百個模塊和1MLOC +。C4800警告,如何查找源代碼中的位置
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\utility(138): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xtree(1804) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2>::pair<std::_Tree_iterator<_Mytree>,int>(_Other1 &&,_Other2 &&,void **)' being compiled
with
[
_Ty1=std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>>,
_Ty2=bool,
_Mytree=std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>,
_Other1=std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>>,
_Other2=int
]
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xtree(1804) : see reference to function template instantiation 'std::pair<_Ty1,_Ty2>::pair<std::_Tree_iterator<_Mytree>,int>(_Other1 &&,_Other2 &&,void **)' being compiled
with
[
_Ty1=std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>>,
_Ty2=bool,
_Mytree=std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>,
_Other1=std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const std::string,tpuTask >>>>,
_Other2=int
]
...
你最好仔細看看你的「tpuTask」類。它似乎允許轉換爲布爾。這幾乎總是無意的,這個警告顯示的原因。指針轉換是通常的問題,這是nullptr被添加到C++ 11的一個重要原因。 –
是的,我認爲你是對的,系統(ab)使用一種方法將通用聯合指針轉換爲各種數據類型,我認爲這在某些C++特定情況下(如STL容器中的類型實例)效果不佳。 –