#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;
相关文章推荐
- 编程规范
- 软件工程作业—评价软件的优缺点
- 今天创建了CSDN博客,用于记录自己的学习经历
- 实现Runnable接口创建线程,并验证同步函数this锁--存疑
- java排序算法二分法 希尔排序 快速排序 归并排序
- MFC开发 常见控件库
- 【HWOJ】计算字符个数
- java 遍历arrayList的四种方法及其效率对比
- 第一次作业完成情况
- 小学数学题
- 四则运算2
- Android TTS说中文
- C语言实现希尔排序
- HDU 3104 Combination Lock [Ad Hoc]
- URL vs URI
- Redis之实战篇(与Mybatis整合)
- 大神亲传:26条深度学习的金科玉律!
- python+selenium 自动化测试webui
- 求字符数组的全排列算法
- 怎样脱离屌丝程序猿的身份