所有预处理指令都是以#开头
预处理指令分三种
1> 宏定义:#define 纯粹的文本替换,而不进行运算
不带参数的宏定义
#define kCount 4
#define COUNT 4
带参数的宏定义可以代替简单函数(参数和结果都要用小括号括起来)
#define sum(v1,v2) ((v1)+(v2))
2> 条件编译
#include <stdio.h>
#define A 1
int main()
{
#if(A == 10)
printf("A是10\n");
#elif(A == 5)
printf("A是5\n");
#else
printf("A是其他值\n");
#endif
printf("条件编译结束了\n");
return 0;
}
条件编译结束后,要在最后加上#endif否则后面都无法编译到
条件编译后面的条件一般是宏定义而不是变量,因为条件编译和宏变量都是在编译之前做的操作,而变量是运行时才产生的
可参考:http://www.cnblogs.com/mjios/archive/2013/03/20/2971275.html
3> 文件包含 #include
<>表示系统自带的文件 ""表示自定义的文件
#include <stdio.h>
#include "lisi.h"
不允许循环包含,如a.h包含b.h,b.h又包含a.h
为防止重复文件包含影响性能,可以使用条件编译配合宏定义来判断,宏名一般使用文件名
#ifndef LISI_H
#define LISI_H
#include "lisi.h"
#endif
预处理指令在代码翻译成0和1之前执行
预处理的位置是随便写的
预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾
宏名一般用大写或者k开头,变量名一般用小写
网友评论