您的位置:首页 > 编程语言 > C语言/C++

【C语言总结】宏定义,预处理

2015-05-03 20:38 309 查看

宏定义

简单宏

格式:#define 标示符 替换列表

#define N 100
int a
;//N就是100


带参数的宏

格式:#define 标示符(x1, x2, x3,……xn) 替换列表

#define MAX(x, y) ((x) > (y) ? (x) : (y))


注意:程序编译的时候会把大写的标示符替换成原来的表达式,所以编译时候程序会增大。

优点或者缺点

优点

①程序可能会稍微快些

②宏会更通用

缺点

①编译后代码通常会变大

②无法用指针指向一个宏

③宏可能会不止一次的计算它的参数

宏定义中括号的使用

#define TWO_PI (2 * 3.1415)


#define RES(x) ((x) * 10)


原因:因为宏在编译的时候是替换表达式,所以很多不确定因素

例如:

#define RES(x) (x * 10) //假如宏是这样定义的,参数没有括号
int j = RES(i + 1);
int j = i + 1 * 10; //编译器会替换成这样。与结果完全不对


取消宏

格式:#define N

条件编译

#if 常量表达式
编译内容
#endif


defined运算法仅用于预处理器,N必须是定义的宏
#if defined(N)
....
#endif


ifdef指令测试一个标示符是否已经定义为宏

#ifdeft 标示符
......
#endif


#ifndef 标示符
......
#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: