------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
预处理
预处理程序用于在编译器真正地看到代码之前分析源文件。
预处理的功能
1》用等价形式代替连字序列
2》将所有以斜线字符(\)结尾的行连接到同一行
3》将程序划分到某个标记流中
4》删除注释,并将注释替换为单个空格
5》处理预处理程序指令并扩展宏指令
预处理程序指令
所有的预处理程序指令都以字符#开头,它必须是命令所在行的第一个非空白字符。字符#之后可以有选择地跟随一个或多个空白或者制表符
#define指令
格式1:
#define name text
在程序中使用name 时,将会直接代替程序响应位置的text
格式2:
#define IS_LEAP_YEAR(y) y % 4 == 0 && y & 100 != 0 || y%400 == 0
用于判断是否为闰年
格式3:
#define SQUARE(v) ((v) * (v))
一定要给变量加上括号
# 和 ##
#define str(x) #x
str(testing)将扩展为”testing”
#define printint(x) printf(#x “ = %i”,x)
printint(count) ;预处理后为
printf(“count = %i”,count);
#define printx(n) printf(“%i\n”,x##n)
printx(5);预处理后
printf(“%i”,x5);
#和##字符两侧不允许出现空格
#error text ….
预处理程序将特定的text编写成一条出错消息
#if指令
格式1:
#if constant_experssion
…
#endif
格式2:
#if constant_experssion
…
#elif constant_experssion2
…
#elif constant_experssion3
…
#else
…
#endif
#ifdef指令
#ifdef identifer
…
#endif
#ifndef指令
#ifndef indentifer
…
#endif
#import 指令
#import <fileName>
#import “fileName”
自己写的用 ” ”,系统自带的用< >
#include指令用法同#import,但是少了除重功能
#undef指令
#undef identifer
解除identifer的宏定义
#import除重功能实现
原理:
#ifndef debug
//文件内容
…
…
#define debug TRUN
#endif