1. 程式人生 > >VS2010 C++ 專案編譯常見問題蒐集----error C2143: syntax error : missing ';' before '*'

VS2010 C++ 專案編譯常見問題蒐集----error C2143: syntax error : missing ';' before '*'

此問題困擾我了很久,在網上大致查找了下相關說明。目前定位問題與定義的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();
};