C的实现被划分为两种不同的环境:翻译环境和执行环境。C代码通过翻译被转换成可执行的机器指令。在执行环境中执行对应的代码。
在编译的预处理阶段,源代码中的一些文本操作会被替代,例如 #define 和 #include 部分会被对应的代码和文件所替代。之后进行解析生成机器指令的初步形式(目标代码),在这个阶段产生绝大多数的错误和警告。最后如果代码有优化需求,优化器会对目标代码进行进一步处理,提高代码的效率。
链接器将每个目标文件链接在一起,形成一个单一完整的可执行程序。
执行就是将代码载入内存,接着开始执行程序代码。在这里引入了堆栈的概念,堆栈可以理解为一段内存,程序运行时存储一些局部变量和地址信息,代码块运行结束,对应的堆栈就会被释放掉。而静态 static 就是将一些变量和数据保存在内存中,从而能够一直保存有这些值。