我在我的項目中有一個小問題。我建立了靜態庫(例如test.lib)。將其包含到我的二進制項目鏈接器中,並將#include "test.h"
包含到stdafx.h
中。但是當二進制開始構建時,C錯誤發生在CSomeObject
測試:編譯器編譯外部包含
「錯誤C2146:語法錯誤:缺少';'在標識符'測試'之前「。
什麼可能是錯的?我還包括到我的二進制項目CSomeObject.h
?也許有人可以解釋編譯器如何與包含? Thnx :)
我在我的項目中有一個小問題。我建立了靜態庫(例如test.lib)。將其包含到我的二進制項目鏈接器中,並將#include "test.h"
包含到stdafx.h
中。但是當二進制開始構建時,C錯誤發生在CSomeObject
測試:編譯器編譯外部包含
「錯誤C2146:語法錯誤:缺少';'在標識符'測試'之前「。
什麼可能是錯的?我還包括到我的二進制項目CSomeObject.h
?也許有人可以解釋編譯器如何與包含? Thnx :)
您的CSomeObject類是否缺少「;」在類聲明的末尾,即在頭文件中的最後一個大括號(「}」)之後?
這聽起來像你沒有包括需要包含的所有東西,或者你有一個錯誤地形成的類/結構聲明。
有時會產生這種類型的錯誤,因爲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;
張貼一些代碼。 – lyricat 2009-11-10 08:56:09
也許你可以發表一些代碼? – Oleg 2009-11-10 08:57:50
注意:謝謝大家!通過交換解決了問題。我的意思是包括命令必須是正確的。 – faya 2009-11-10 09:29:06