编程规范 --- 宏
2016-06-04 15:12
253 查看
1:用宏定义表达式时,要使用完备的括号。
示例:如下定义的宏都存在一定的风险。#defineRECTANGLE_AREA( a, b ) a * b
#defineRECTANGLE_AREA( a, b ) (a * b)
#defineRECTANGLE_AREA( a, b ) (a) * (b)
正确的定义应为:
#defineRECTANGLE_AREA( a, b ) ((a) * (b))
2:将宏所定义的多条表达式放在大括号中。
示例:下面的语句只有宏的第一条表达式被执行。为了说明问题,for语句的书写稍不符规范。#defineINTI_RECT_VALUE( a, b )\
a = 0;\
b = 0;
for (index = 0; index< RECT_TOTAL_NUM; index++)
INTI_RECT_VALUE( rect.a, rect.b );
正确的用法应为:
#defineINTI_RECT_VALUE( a, b )\
{\
a = 0;\
b = 0;\
}
for (index = 0; index< RECT_TOTAL_NUM; index++)
{
INTI_RECT_VALUE( rect[index].a,rect[index].b );
}
3:使用宏时,不允许参数发生变化。
示例:如下用法可能导致错误。#define SQUARE( a )((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); //结果:a = 7,即执行了两次增1。
正确的用法是:
b = SQUARE( a );
a++; // 结果:a = 6,即只执行了一次增1。
相关文章推荐
- Java实现多种方式遍历Map集合
- 小米google play service停止工作解决办法,不root,不刷第三方recovery(也适用于其他的手机)
- 编程规范 --- 代码测试、维护
- Mac下PHP连接MySQL报错"No such file or directory"的解决办法
- 信号量互斥编程
- php实习(四)
- c++ string split分割字符串
- 编程规范 --- 代码编辑、编译、审查
- 【算法学习】快包算法
- Java删除文件夹和文件
- java web开发中的路径问题
- GoLang 的 daemonize 实现
- 关于使用百度地图SDK报错java.lang.UnsatisfiedLinkError的解决办法
- java.io.RandomAccessFile
- 编程规范 --- 质量保证
- Qt 程序在 Windows 下的发布
- Netty异步编程模型上的同步调用
- PhpStorm环境搭建
- 在Python的Flask框架中构建Web表单的教程
- 爱上Ubuntu系列(2):配置 Java 环境变量 及 设置默认JDK