很简单不是吗?但是学过计算机的朋友都应该知道,程序的编译过程要分为下图所示的过程而GCC的强大之处就在于它允许你在上面所示的任何一个过程中停下来查看中间结果,并对其加以控制。
1. 预处理首先是预处理过程,GCC的-E选项可以让GCC在预处理后停止编译,并向标准输出打印预处理过后的文件。下面的-o用于指定输出文件的文件名。
gcc –E hellowrold.c –o helloworld.cpp下面是helloworld.cpp的一部分的内容,我们看到,文件已经包含了stdio.h中的内容。
如果我们想执行下一步的编译过程,可以继续使用GCC的-x 选项,该选项用于显示指定文件的后缀名(而不是让编译器根据后缀来自行判断)。我们比较常用的language type有如下几种,(如果读者想获得更为完整参数说名,请参考GCC manual):
l c c-header c-cpp-output
l c++ c++-header c++-cpp-output
l assembler assembler-with-cpp
另外,下表列出了常用的GCC后缀名
当然,你也可以省略掉language type的部分,这时候GCC会根据文件的后缀名自行判断,就像你没有使用该选项一样。
下面继续我们的编译过程