2011-05-03 86 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因此,它确实解决了编译错误。

相关问题