2009-11-10 133 views
0

我在我的項目中有一個小問題。我建立了靜態庫(例如test.lib)。將其包含到我的二進制項目鏈接器中,並將#include "test.h"包含到stdafx.h中。但是當二進制開始構建時,C錯誤發生在CSomeObject測試:編譯器編譯外部包含

「錯誤C2146:語法錯誤:缺少';'在標識符'測試'之前「。

什麼可能是錯的?我還包括到我的二進制項目CSomeObject.h?也許有人可以解釋編譯器如何與包含? Thnx :)

+2

張貼一些代碼。 – lyricat 2009-11-10 08:56:09

+0

也許你可以發表一些代碼? – Oleg 2009-11-10 08:57:50

+0

注意:謝謝大家!通過交換解決了問題。我的意思是包括命令必須是正確的。 – faya 2009-11-10 09:29:06

回答

0

您的CSomeObject類是否缺少「;」在類聲明的末尾,即在頭文件中的最後一個大括號(「}」)之後?

3

這聽起來像你沒有包括需要包含的所有東西,或者你有一個錯誤地形成的類/結構聲明。

有時會產生這種類型的錯誤,因爲test之前的標識符右邊是一些編譯器一無所知,所以它與test治療說明書,作爲該標識,而非用於test聲明。然後,當它看到test這是一個語法錯誤。

所以,如果你有行:

CSomeObject test; 

但是編譯器不知道什麼CSomeObject,你會得到你所看到的錯誤。

您也將看到問題,像下面這樣:

class CSomeObject { 

    // ... 

} // there's a missing semi-colon here 

CSomeObject test; 

,因爲發生的事情是,第二CSomeObject是class CSomeObject一個實例,和`測試是一個虛假的語法錯誤。

由語法正確的,什麼是應該的樣子是:

class CSomeObject { 

    // ... 

}; // note the semi-colon... 

CSomeObject test;