一、程序环境
程序存在两种不同的环境:
1.翻译环境,源代码被转换为可执行的机器指令
- 组成一个程序的源文件通过编译过程分别转换为目标代码
- 每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序
- 链接器同时会引入该程序被用到的函数,它可以搜索程序员的个人程序库,将其需要的函数也链接到程序中
编译也分为:
- 预编译(头文件展开,宏替换,注释的删除或替换,条件编译)
- 编译(词法、语法、语义分析,符号汇总)
- 汇编(形成符号表)
2.执行环境,用于实际执行代码
- 程序必须载入到内存中
- 程序的执行便开始,接着调用main函数
- 开始执行程序代码,程序将使用一个运行时堆栈,存储函数的局部变量和返回地址
- 终止程序,正常终止main函数,也有可能是意外终止
二、预处理
1.预定义符号
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
这些预定义符号都