黑马程序员--预处理

预处理


预处理程序用于在编译器真正地看到代码之前分析源文件。


预处理的功能

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 

posted @ 2015-01-21 18:27  frozen1224  阅读(163)  评论(0编辑  收藏  举报