即使是最简单的类也无法编译,"尚未宣布

Yot*_*tam 2 c++

好的,这真的很烦人.我有(几乎)最简单的课程.两个文件:a.cpp和啊啊:

#ifdef A_H
#define A_H
class a{
  public:
    a();
};
#endif
Run Code Online (Sandbox Code Playgroud)

和a.cpp

#include "a.h"
a::a(){
}
Run Code Online (Sandbox Code Playgroud)

然而它不会编译:

g ++ a.cpp a.cpp:3:错误:'a'
尚未声明

显然,我做错了什么,但是什么?

修好了,我用#ifndef替换了#ifdef

gd1*_*gd1 15

替换#ifdef#ifndef,然后再试一次.

我发现有一些IDE非常有用,它们在您键入时解析代码,并以"灰色"字体显示不会编译的代码,如当前的宏定义.而且,跑步

gcc -E

接下来是gcc您已经知道的参数,将显示预处理后要编译的代码是什么(宏由预处理器解析,编译构建工具链的初始步骤).


Dou*_* T. 15

这是因为

 #ifdef A_H
Run Code Online (Sandbox Code Playgroud)

需要是

 #ifndef A_H
Run Code Online (Sandbox Code Playgroud)

注意"n",如果没有定义的话.

如果定义了A_H,前者只会编译代码,因为你只在下一行定义它.