1、过程

源代码-->可执行程序(xxx.c-->xxx.exe)

编译和链接_#define

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移除旧的宏