gcc编译器编译程序有四个阶段,预处理、编译、汇编、链接。预处理阶段会将源代码中的包含的头文件如stdio.h编译进来;编译阶段,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言;汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码;链接阶段就是将目标文件链接成可执行文件。
extern的作用就是在汇编阶段告诉编译器放过extern声明的变量(编译器对没有定义的变量会报错),这个变量的定义在其他文件中;然后在链接时找到引用的其他文件中的变量。这个变量在其他文件中必须时全局变量。如果这个变量被多次定义,将会出错。并且这个变量最好不要在头文件中进行定义。