【发布时间】:2017-01-30 09:43:09
【问题描述】:
我正在使用 Gcc 的 Gnu cc 编译器 来编译我的 C 程序。考虑一个程序,
#include <stdio.h>
int main(){
return 0;
}
现在,当我预处理上述代码时,使用
cpp sample.c > sample.i
sample.i 中有很多我没有包含的内容。比如说,“stdio.h”文件是预处理过的。如果是这样的话,
问题 1:
为什么我的预处理文件中有这么多行?我没有使用任何标准库函数或宏。
问题 2:
谁能解释一下当预处理器处理 C 文件时到底发生了什么?(我在“*.i”文件中得到的内容)
编译器:gcc
操作系统:Ubuntu
谢谢
【问题讨论】:
-
它会直接打开包含文件,并就地复制内容。如果
<stdio.h>还有#includes 一些其他文件,这些文件也会被复制进来,依此类推。这就是为什么你会得到这么多你认为自己不想要的东西。
标签: c gcc c-preprocessor