例如,如果我错误地#include某些东西并且预处理器出错了,它是否仍然通过编译器,汇编器和链接器?
答案 0 :(得分:0)
创建一个只包含此行的小程序:
#includerr (stdio.h)
告诉我会发生什么......
您能看到任何.OBJ
,.O
或.EXE
或a.out
个文件吗?如果您可以看到.O
或.OBJ
,则文件已经编译和汇编。如果您看到任何.EXE
或a.out
个文件,则该文件已链接到标准库并生成可执行文件。
如果您看不到任何这些文件,请手动尝试编译该文件。例如,在Linux下你可以这样做:
gcc -c -S file.c
将编译并生成一个程序集文件,然后将停止。如果您在此之后可以看到.S
文件,并且该文件不为空,则file.c
已成功编译并转换为汇编程序。
如果你这样做:
gcc -c file.c
如果成功,将尝试编译和汇编file.c
file.o
。
如果你这样做:
gcc file.c
如果成功,将尝试编译,汇编和链接file.c
a.out
。