2010-11-15 157 views
4

ENV:Visual Studio的警告級別設置爲4, 代碼中唯一的文件解決方案:禁用警告2008

#pragma warning(push) 
#pragma warning(disable: 4503) 
#pragma warning(disable: 4702) 
#include <boost/property_tree/ptree.hpp> 
#pragma warning (pop) //mark 

#include "iostream" 

int main() 
{ 
boost::property_tree::ptree pt; 
for(boost::property_tree::ptree::const_iterator it = pt.begin(); 
    it != pt.end(); 
    ++it) 
    { 
    std::cout << it->second.data() << '\n'; 
    } 

return 0; 
} 

問題:警告4503仍然出現在編譯時。 我試過的其他東西:

  1. 把'// mark'作爲應用程序的最後一行,沒有效果。
  2. 如果我使用#pragma警告(禁用:4503 4702),而推/流行,它的工作原理,但它影響什麼已經爲整體解決方案之後編譯,即使我把的#pragma警告(默認:XX)的地方,這不是」 t似乎將警告恢復爲默認狀態。

誰知道爲什麼會發生這種情況,以及在Visual Studio中抑制警告的最佳解決方案是什麼。乾杯。

回答

2
從這裏找到

答案:HTTP://connect.microsoft.com/VisualStudio/feedback/details/442051/cannot-suppress-warning-in-template-function

粗略地說,其原因是因爲警告在我的代碼中生成,而不是在頭文件中生成,因爲它是模板。它的代碼是在頭文件中生成的,這種方式是可行的。

+0

但它不到風度解釋了爲什麼替代解決方案1沒有工作 – 2010-11-18 04:44:27