预编译是整个编译过程的第一步,是g++ -E选项输出的结果。
这个步骤处理的是源文件/头文件中的宏,宏指令常用的有以下几类:
- 文件包含:#include
- 宏定义:#define、#undef
- 条件编译:#ifdef、#ifndef、#if、#elif、#else、#endif
1. 文件包含 #include
预处理会把要包含的文件的内容全部包含进来,比如下面这个文件prepro.cpp:
#include "prehead.h"
int main(){
add(1, 2);
}
引入了头文件prehead.h:
#ifndef _PREHEAD_H
#define _PREHEAD_H
/* declaration of a function that add two integer */
int add(int, int);
#endif
使用命令g++ -E prepro.cpp预编译,输出结果如下:
# 1 "prepro.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "prepro.cpp"
# 1 "prehead.h" 1
int add(int, int);
# 2 "prepro.cpp" 2
int main(){
add(1, 2);
}
可以