摘要: C多文件编译、作用域和存储周期 所谓的编译,分为两个步骤:编译和链接编译有两个过程:a)预编译:处理#...的语句。#define的宏替换、#if条件编译、#include只是简单的把对应的文件内容复制到#include语句的位置b)单元源代码编译:随后编译器对每个cpp文件(在预编译阶段已经将#include的文件复制完成)单独编译成模块(.obj/.o等),在这个过程中除了语法检查外,还要在本cpp文件中检查调用函数或引用变量是否声明过。最后生成的模块开头会有一个符号表,其中包括了本模块定义的函数或变量在本模块中的偏移量;以及本模块引用的外部变量或函数(称为unsolved symbol. 阅读全文