编译器编译外部包含

问题描述 投票:0回答:2

我的项目有一个小问题。我已经构建了静态库(例如 test.lib)。将其包含到我的二进制项目链接器中,并将

#include "test.h"
包含到
stdafx.h
中。但是当二进制文件开始构建时,
CSomeObject
测试中出现C错误:

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

可能出了什么问题?我还包含到我的二进制项目

CSomeObject.h
?也许有人可以解释编译器如何与包含一起工作?提前谢谢:)

c++ visual-c++ include
2个回答
3
投票

听起来您没有包含需要包含的所有内容,或者您的类/结构声明格式不正确。

有时会生成此类错误,因为编译器对

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;

0
投票

您的 CSomeObject 类是否缺少“;”在类声明的末尾,即在头文件中的最后一个右大括号(“}”)之后?

© www.soinside.com 2019 - 2024. All rights reserved.