您的位置:首页 > 其它

#define

2016-03-12 10:41 399 查看

define 宏定义命令

(1)作用

1.1 定义常量

#define PI 3.14


如此使用的缺点:
1.   由于宏替换的数据是没有数据类型的,所以编译器无法进行类型安全检查。
2. 宏替换的记号从未被编译器看到,如PI就可能没有进入编译器的符号表。如果由于此宏替换产生报错将难以调试。
3. 如果大量使用PI,可能导致目标码中有多份“3.14”。
替换建议:
使用 `const float PI=3.14`;
或者`enum { PI=3.14  }` ,相对于const,enum更像#define,比如你无法区PI的地址。


(2)定义宏函数

#define CALL_WITH_MAX(a,b)  ((a)>(b)?(a):(b))


初看如此定义没多大问题,小括号使用没问题

但:

int main()
{
int a=2;
int b=2;
int c= CALL_WITH_MAX(++a,b);
printf("%d\n",c);   //c值为4
}


建议替换 inline;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: