好的,这真的很烦人.我有(几乎)最简单的课程.两个文件: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,前者只会编译代码,因为你只在下一行定义它.