摘要: 1.1 C编译器如何工作一旦你使用一个文本编辑器写了一个C源文件,你可能会调用一个C编译器将它翻译成机器码,编译器运转在一个包含有源文件和所有通过#include指示符引用进来的头文件的翻译单元中,如果编译器在翻译单元中没有发现错误,它将生成含有机器码的目标文件,目标文件常使用后缀.o或者.obj命名,另外,编译器可能也会生成一个汇编程序列表。目标文件也叫做模块,一个库,例如C标准库,包含已经编译的、可以立即使用的标准函数模块。编译器翻译C代码中的每一个翻译单元,每个包含任何头文件的源文件将生成一个独立的目标文件,然后编译器调用连接器,它会将目标文件、使用到的库函数合并成一个可执行程序,Fig 阅读全文
posted @ 2010-12-04 00:32 Socrates 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 标识符范围 标识符的范围即程序所能“看到”标识符的部分,范围的类型通常由你声明变量的地方决定(除过标签,它往往具有函数范围),下面是四种可能的范围:文件域: 如果你在所有的程序块和参数列表这外声明了一个标识符,那么它将具有文件域,声明之后在任意地方使用它直到翻译单元结束。 块域: 除过标签,在块中声明的标识符具有块域,你只能在声明它的最小块域中使用它,最小块域通常为一个函数的函数体,在C99中,声明不必放在函数块的最前面,在一个函数中定义的参数名也具有块域,在函数体中有效。函数原型域:函数原型中的参数名具有函数原型域,因为这些参数名在原型外没有意义,它们往往用做注释,可被忽略。 函数域:标签的 阅读全文
posted @ 2010-12-04 00:26 Socrates 阅读(154) 评论(0) 推荐(0) 编辑