C语言(1) - 开始之前
总之是鬼使神差的原因,忽然想起来要复习一下C。
但是谁又知道这种激情什么时候会被熄灭,管它呢,留个脚印吧。
因为大学的时候学过C,也算有点基础,所以直接下了本《C和指针》来复习一下。
1.我使用的是GCC 3.4.5作为编译器
2.在ANSI C的任何版本都有两种环境:编译环境和执行环境。
3.编译环境:
3.1预处理器首先工作,它会做一些文本操作,如将#define预处理指令替换为实际值。
3.2然后源代码会经过解析的过程,像检查代码的语法是否正确等等。这一步是产生大量编译错误信息的步骤。
3.3随后会被翻译器翻译为目标代码。
3.4如果有编译优化选项的话,编译器还会对目标代码进行优化。
3.5然后是链接器,链接器将各个目标代码链接在一起形成一个可执行的文件,链接器会链入工程中需要使用的C标准 库函数级非标准库的模块。
4.运行环境:
4.1程序的载入,如果是在宿主环境中,这个过程由操作系统完成。在这个过程中,不是存储在堆栈空间的变量将在这时候得到初始值。
4.2程序开始运行。通常一个很小的启动程序和程序链接在一起,用于处理一些日常事务。接下来就用从main()开始
4.3程序开始运行,在大多数的机器里,通常会产生一个运行时堆栈空间(stack),以维护函数的局部变量和返回地址。程序这时可以使用静态内存了,在程序运行的整个过程中,静态变量将一直保留自己的值。
4.4程序的关闭,正常的关闭里由main()函数的return语句完成的,在宿主环境中,启动程序将再将获得控制权,以完成日常事务,如文件的关闭等。