2010-03-23 80 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頭文件?如果它們以這種方式編譯,那麼在它們之前包含的其中一個頭文件中可能缺少;