我的项目有一个小问题。我已经构建了静态库(例如 test.lib)。将其包含到我的二进制项目链接器中,并将
#include "test.h"
包含到 stdafx.h
中。但是当二进制文件开始构建时,CSomeObject
测试中出现C错误:
“错误 C2146:语法错误:缺少 ';'在标识符“test”之前”。
可能出了什么问题?我还包含到我的二进制项目
CSomeObject.h
?也许有人可以解释编译器如何与包含一起工作?提前谢谢:)
听起来您没有包含需要包含的所有内容,或者您的类/结构声明格式不正确。
有时会生成此类错误,因为编译器对
test
之前的标识符一无所知,因此它将使用 test
的语句视为该标识符的声明,而不是 test
的声明。 然后当它看到 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;
您的 CSomeObject 类是否缺少“;”在类声明的末尾,即在头文件中的最后一个右大括号(“}”)之后?