2011-05-03 56 views
1

我在使用boost圖庫(1.45)的XCode 3.2.6 gcc 4.2上構建項目。構建結果在一個惱人的警告:BOOST_concept在使用boost圖庫時重新定義了警告

/include/boost/concept/detail/concept_def.hpp:34:1: warning: "BOOST_concept" redefined 

concept_def.hpp似乎並沒有包含任何保護,防止這種多重定義和升壓圖形庫似乎被構造,以確保它是包含多次。在我的情況下,包括序列是:

一個定義:

/include/boost/concept/detail/concept_def.hpp:34 
/include/boost/graph/buffer_concepts.hpp:9, 
/include/boost/graph/graph_concepts.hpp:21, 
/include/boost/graph/detail/adjacency_list.hpp:31, 

另一個定義:

/include/boost/concept/detail/concept_def.hpp:34 
/include/boost/graph/graph_concepts.hpp:25, 
/include/boost/graph/detail/adjacency_list.hpp:31, 

雖然這只是我很難相信這是與升壓發佈警告,因此我期望我做錯了什麼。

任何想法?

感謝,

巴里

回答

1

錯誤似乎只上了XCode的情況發生,我們所有的其他平臺(Linux GCC4,msvc2010)建立的罰款。

這裏是我們的解決方法:

升壓/觀/細節/ concept_def.hpp:12

#ifdef BOOST_concept 
# undef BOOST_concept 
#endif 

PS: 如果你想知道爲什麼我們不把一個#ifndef保護周圍整個文件然後知道,由於一些奇怪的原因,這是行不通的!

0

發佈在頁面中的問題與我們遇到的問題相同。以下是我們基於內容的解決方案

如果包含在文件的開頭,則在hpp文件的末尾添加#include。

,我們添加了包括buffer_concepts.hpp結束concept_undef.hpp因此,它確實解決了編譯錯誤。

相關問題