我的项目有点问题。我已经构建了静态库(例如test.lib)。将其包含在我的二进制项目链接器中,并将#include "test.h"
包含到stdafx.h
中。但是当二进制文件开始构建时,CSomeObject
测试会发生C错误:
“错误C2146:语法错误:缺少';'在标识符'test'之前。“
可能有什么不对?我还包含在我的二进制项目CSomeObject.h
中?也许有人可以解释编译器如何使用包含? Thnx提前:))
答案 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类是否缺少“;”在类声明的最后,即在头文件中的最后结束括号(“}”之后)?