编译器工作流程

写在前面:本文仅供以后自己学习参考和学习交流,内容来自于互联网以及自身理解。如有侵权请及时联系、如有错误请不吝指教。

要理解C文件(.c)与头文件(.h),一般先需要弄明白编译器的工作过程。一般编译器会进行以下操作:

      1.预处理:做宏定义、文件包含、条件编译工作,特点是带有“#”的语句;

   详见:C语言三种预处理功能

  2.词法与语法分析阶段:顾名思义,检查词法语法错误;

  3.编译阶段编译成汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件);

  4.连接阶段:将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件(生成.exe文件)。

 编译器工作过程:查找main.c文件 --> 目标文件(.obj) --> 可执行文件(.exe)


例如,有以下代码,其输出为5:

扫描二维码关注公众号,回复: 1469575 查看本文章

#include<stdio.h>
#define uint unsigned int
int fun(int a);
void main()
{
 uint x=5;
 printf("%d",fun(x));
}

int fun(int a)
{
 return a;
}
编译器先包含了头文件stdio.h,再将#define后所有uint替换为unsigned int,接着检查错误词法语法,生成.obj,最后生成.exe并运行。


C语言三种预处理功能

C语言中.h和.c文件解析

猜你喜欢

转载自blog.csdn.net/redgragon0/article/details/79180929