我正在使用增强图库(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,
虽然这只是一个警告,但我发现很难相信这是通过提升发布的,因此我希望我做错了。
有什么想法吗?
谢谢,
巴里
答案 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,它确实解决了编译错误。