编译器在对宏预处理时,会:
1.将头文件展开
2.去掉注释
3.宏替换
4.条件编译
宏替换时应注意的几点:
1).## 会把它两边的字符转换为一个字符
2).宏要替换一个函数或者参数时,需要加上()
3).邻近字符连接原则
4).#value ,value指代一个变量名,#会将该字面值转换为一个字符串“value”1.预处理时对预定义符号的执行:
FILE//当前正在编译的源文件
TIME//文件被编译的时间
DATE//文件被编译的日期
LINE//文件当前的行号
STDC
printf(“time : %s\n,line : %d\n,date : %s\n,file : %d\n”,TIME ,LINE ,DATE ,FILE );
预处理指令:
#include
#define
预处理器读入源代码,根据预处理指令对其进行修改,然后将处理过的源代码递交给编译器
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEBUG printf("time : %s\nline : %d\n\
date : %s\nfile : %d\n",\
__TIME__ ,__LINE__ ,__DATE__ ,__FILE__ )
unsigned char i = 0;
int main()
{
DEBUG;
system(&