我正在XCode 3.2.6上构建一个项目,其中使用了boost图形库(1.45)。构建会导致一个恼人的警告:
/include/boost/concept/detail/concept_def.hpp:34:1: warning: "BOOST_concept" redefinedconcept_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,虽然这只是一个警告,但我发现很难相信这是通过boost发布的,因此我认为我做错了什么。
有什么想法吗?
谢谢,
巴里
发布于 2011-05-25 11:21:33
错误似乎只发生在XCode上,我们所有的其他平台(linux gcc4,msvc2010)都构建得很好。
以下是我们的解决方法:
增强/概念/细节/概念_定义.hpp:12
#ifdef BOOST_concept
# undef BOOST_concept
#endifPS:如果你想知道为什么我们不在整个文件周围放置一个#ifndef守卫,那么要知道,由于某种奇怪的原因,这是不起作用的!
发布于 2012-03-22 23:21:53
页面中发布的问题与我们遇到的问题相同。以下是我们基于连接的解决方案
如果文件开头包含#
,则在hpp文件的末尾添加#include。
我们在buffer_concepts.hpp的末尾添加了相应的include concept_undef.hpp,它确实解决了编译错误。
https://stackoverflow.com/questions/5873456
复制相似问题