VS2010 C++ 專案編譯常見問題蒐集----error C2143: syntax error : missing ';' before '*'
阿新 • • 發佈:2019-02-02
此問題困擾我了很久,在網上大致查找了下相關說明。目前定位問題與定義的include的順序有關
比如我在標頭檔案定義整合的標頭檔案中有如下定義
sdafx.h
#include "test.h"
#include "another.h"
test.h
#include "sdafx.h"
class test
{
test();
};
another.h
#include "sdafx.h"
class another
{
test *p;
another();
};
這樣是沒有問題的,因為在sdafx.h中,編譯時預先載入了test類,以至another類在引用test型別指標時可以找到對應的記憶體結構。
但是如果我們把include順序調轉過來,編譯時就會出現 error C2143: syntax error : missing ';' before '*'錯誤
解決方式
一,整理include的標頭檔案順序
二,如果目標類中引用的類物件過多,可以在類定義前宣告要引用的類成員。
#include "sdafx.h"
class test;
class another
{
test *p;
another();
};