2010-03-23 91 views
1

致力于将一些C++代码从Linux移植到Windows。该代码使用boost 1.4.2,但是它在构建boost模块时仍然失败。基本上,每个升压hpp文件碰巧包含“命名空间提升”错误:失踪';'在使用boost之前的命名空间之前1.4.2

error C2143: syntax error : missing ';' before 'namespace' 

任何想法可能导致这种情况?

+3

“符合ASNI的C代码” - 但boost是一个C++库! – 2010-03-23 13:35:10

+0

是啊...我早些时候正在做ansi C ...哎呀,现在修好了。 – 2010-03-23 13:37:00

+4

你可以发布一个演示错误的最小代码示例吗?毕竟,当你有语法错误时,通常可以帮助检查*语法*。另外,你的意思是升压1.42? 1.4.2会很*旧。 – 2010-03-23 13:40:39

回答

5

在包含Boost标头之前丢失;可能是造成这种情况的原因。下面的代码产生这样的错误:

struct X {} // << ; lost here 

#include <boost/shared_ptr.hpp> 

这个小代码给我下面的错误:

boost/config/suffix.hpp(460) : error C2143: syntax error : missing ';' before 'namespace'
+1

错误显示了包含树中的大约20个关卡......有关如何找到丢失的任何提示;? 另外...此代码编译在Linux上,我没有改变它。 – 2010-03-23 13:39:45

+2

检查我的样本。它会在'suffix.hpp'的某处产生错误。要找到错误,只需在首次包含Boost标头之前打印';'。移动';'直到找到需要的地方。 – 2010-03-23 13:43:29

0

你有没有尝试过,包括在第一行这些boost头文件?如果它们以这种方式编译,那么在它们之前包含的其中一个头文件中可能缺少;