BOOST_concept在使用boost图库时重新定义了警告

时间:2011-05-03 17:42:49

标签: xcode boost

我正在使用增强图库(1.45)在XCode 3.2.6 gcc 4.2上构建一个项目。构建会产生恼人的警告:

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

concept_def.hpp似乎不包含任何保护以防止这种多重定义,并且似乎构造了boost图库以确保它被多次包含。在我的例子中,包含序列是:

一个定义:

/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,

虽然这只是一个警告,但我发现很难相信这是通过提升发布的,因此我希望我做错了。

有什么想法吗?

谢谢,

巴里

2 个答案:

答案 0 :(得分:1)

错误似乎只发生在XCode上,所有其他平台(linux gcc4,msvc2010)构建正常。

以下是我们的解决方法:

升压/概念/细节/ concept_def.hpp:12

#ifdef BOOST_concept
# undef BOOST_concept
#endif

PS:  如果你想知道我们为什么不在整个文件中放一个#ifndef警卫,那么就知道由于一些奇怪的原因这不起作用!

答案 1 :(得分:0)

页面中发布的问题与我们遇到的问题相同。以下是我们基于概念的解决方案

  

如果文件开头包含#pplude,则在hpp文件的末尾添加#include。

我们在 buffer_concepts.hpp 的末尾添加了include concept_undef.hpp,它确实解决了编译错误。