1、过程
源代码-->可执行程序(xxx.c-->xxx.exe)
2、预处理(可在gcc下查看过程)
主要进行文本操作,形式如下:
xxx.c-E-oxxx.i
作用:
(1)用于头文件的包含;
(2)#include/define xxx指令
(3)#define定义符号的替换
(4)将注释替换为空格
·······
3、编译
把语言代码翻译成汇编代码
形式:xxx.i-->xxx.s(-S)进行实现
过程:词法分析、语法分析、语义分析
4、汇编
转变为机器可执行的指令
xxx.s-c-o-xxx.o
5、预编译详解
(1)预定义符号
__FILE__文件名
__DATE__日期
__TIME__时间
__LINE__行号
__STDC__看是否遵循ASIC,是则返回1
(2)#define定义宏(慎用,不要吝啬括号)
申明方式:
#define name(parament-list) stuff
(3)宏的替换规则
a、首先对参数进行检查,看是否有#define定义
b、替换文本插入到原本位置
c、再次扫描检查
注:字符串中文本不替换
(4)宏、函数的对比
宏:
1、时间短(简单运算)
2、宏的参数不定,灵活
3、无法调试
4、存在运算符优先级问题
5、无法递归
(5)命名
红一般全大写,函数一般不全大写
(6)#undef移除旧的宏