编译顺序读取源顺序(字符流),对之停止词法跟语法的分析,将高等言语指令转换为功能等效的汇编代码,再由汇编顺序转换为呆板言语,并且按照操纵体系对可履行文件格局的请求链接生成可履行顺序。
C源顺序 > 预编译处理(.c) > 编译、优化顺序(.s、.asm) > 汇编顺序(.obj、.o、.a、.ko) > 链接顺序(.exe、.elf、.axf等)
#define Name TokenString
,#undef
等。预编译会将顺序中的全部Name用TokenString调换,但作为字符串常量的Name则不被调换。#ifdef
,#ifndef
,#else
,#elif
,#endif
等。这些指令容许顺序员经由过程定义差其余宏来决定编译顺序对哪些代码停止处理。#include "FileName"
或许 #include <FileName>
等。头文件中一般用伪指令 #define
定义了大年夜量的宏(最罕见的是字符常量),同时包含有各种外部标记的申明。.i
。.s
或 .asm
开头。.obj
或 .o
开头。.exe
或 .elf
开头。C言语顺序的编译过程是一个复杂的过程,涉及到多个阶段跟东西。经由过程懂得这个过程,我们可能更好地懂得C言语顺序的任务道理,并编写更高效、牢固的顺序。