2009-11-10 106 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;