编译器编译外部包括

时间:2009-11-10 08:46:56

标签: c++ visual-c++ compiler-construction include

我的项目有点问题。我已经构建了静态库(例如test.lib)。将其包含在我的二进制项目链接器中,并将#include "test.h"包含到stdafx.h中。但是当二进制文件开始构建时,CSomeObject测试会发生C错误:

  

“错误C2146:语法错误:缺少';'在标识符'test'之前。“

可能有什么不对?我还包含在我的二进制项目CSomeObject.h中?也许有人可以解释编译器如何使用包含? Thnx提前:))

2 个答案:

答案 0 :(得分:3)

听起来你并没有包含所有需要包含的内容,或者你有一个错误形成的类/结构声明。

有时会生成这种类型的错误,因为test之前的标识符是编译器一无所知的东西,所以它将test的语句视为该标识符的声明,而不是test。 1}}。然后,当它看到test时,这是一个语法错误。

所以如果你有这条线:

CSomeObject test;

但是编译器对CSomeObject一无所知,你会得到你所看到的错误。

您还会看到类似以下内容的问题:

class CSomeObject {

    // ...

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

CSomeObject test;

因为发生的事情是第二个CSomeObject是class CSomeObject的实例,而`test是一个虚假的语法错误。

通过语法正确,它应该是什么样的:

class CSomeObject {

    // ...

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

CSomeObject test;

答案 1 :(得分:0)

您的CSomeObject类是否缺少“;”在类声明的最后,即在头文件中的最后结束括号(“}”之后)?