程序的翻译环境和执行环境
在ANSI C的任何一种实现中,存在两个不同的环境
第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
第2种是执行环境,它用于实际执行代码。
翻译环境是将源文件经过翻译器变成目标文件,目标文件再经过链接器与链接库变成可执行的程序;
翻译环境也分为几个阶段
1.预处理阶段(gcc -E test.c -o test.i):
宏替换,去注释,头文件展开,条件编译;
2.编译(gcc -S test.c)
是将源文件转换成汇编代码
语法分析
词法分析
语句分析
符号汇总
3.汇编(gcc -c test.c)
将汇编代码转换成机器指令(形成 *.obj文件,再linux中形成 *.o文件)
4.链接
合并段表
符号表的合并和符号表的重定位
运行环境:
就行程序执行的环境
预处理
1.预处理符号
__FILE__ //进行编译的源文件
__LINE__ //改代码出现行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
FILE
LINE