- #include <stdio.h>
- #define ONE 1 #define TWO 2
- int main()
- { printf("%d, %dn", ONE, TWO);
- return 0; }
用下面这行命令编译
- g++ hello.cpp -save-temps
编译完后, 会在文件夹中生成两个文件: hello.s 和 hello.ii
hello.s 里面是汇编代码, 而 hello.ii 则是预处理过后的源代码。
用文本编辑器打开 hello.ii , 你会发现多出许多代码. 那是因为 #include 指令把 stdio 头文件的代码加进去了。
如果你把滚动条拉到最底下, 就会发现, printf 那一行的宏定义 ONE 和 TWO 已经被预处理器替换成 1 和 2 了 .
神奇吧!
其实它只是在编译的时候, 把你的源代码文件复制一份, 当作临时文件, 然后把里面的预处理指令替换掉. 用完后就把这个临时文件删了. 所以一般情况下我们不知道这个文件的存在.










