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

时间:2011-04-26 20:13:04

标签: c++

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

#ifdef A_H
#define A_H
class a{
  public:
    a();
};
#endif

和a.cpp

#include "a.h"
a::a(){
}

然而它不会编译:

  

g ++ a.cpp a.cpp:3:错误:'a'没有   已被宣布

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

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

2 个答案:

答案 0 :(得分:15)

#ifdef替换为#ifndef,然后重试。

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

gcc -E

后面跟着你已经知道的gcc个参数,它会告诉你在预处理之后要编译的代码是什么(宏由预处理器解析,这是编译构建工具链的初始步骤)。

答案 1 :(得分:15)

因为

 #ifdef A_H

需要

 #ifndef A_H

注意“n”,如果没有定义。

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