华为C语言编程规范—代码测试、维护2
来源:互联网 发布:医院网络总监 编辑:程序博客网 时间:2024/06/05 10:52
11-1:用宏定义表达式时,要使用完备的括号。
示例:如下定义的宏都存在一定的风险。
#define RECTANGLE_AREA( a, b ) a * b
#define RECTANGLE_AREA( a, b ) (a * b)
#define RECTANGLE_AREA( a, b ) (a) * (b)
正确的定义应为:
#define RECTANGLE_AREA( a, b ) ((a) * (b))
11-2:将宏所定义的多条表达式放在大括号中。
示例:下面的语句只有宏的第一条表达式被执行。为了说明问题,for 语句的书写稍不符规范。
#define INTI_RECT_VALUE( a, b )\
a = 0;\
b = 0;
for (index = 0; index < RECT_TOTAL_NUM; index++)
INTI_RECT_VALUE( rect.a, rect.b );
正确的用法应为:
#define INTI_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 );
}
11-3:使用宏时,不允许参数发生变化。
示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增1。
正确的用法是:
b = SQUARE( a );
a++; // 结果:a = 6,即只执行了一次增1。
示例:如下定义的宏都存在一定的风险。
#define RECTANGLE_AREA( a, b ) a * b
#define RECTANGLE_AREA( a, b ) (a * b)
#define RECTANGLE_AREA( a, b ) (a) * (b)
正确的定义应为:
#define RECTANGLE_AREA( a, b ) ((a) * (b))
11-2:将宏所定义的多条表达式放在大括号中。
示例:下面的语句只有宏的第一条表达式被执行。为了说明问题,for 语句的书写稍不符规范。
#define INTI_RECT_VALUE( a, b )\
a = 0;\
b = 0;
for (index = 0; index < RECT_TOTAL_NUM; index++)
INTI_RECT_VALUE( rect.a, rect.b );
正确的用法应为:
#define INTI_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 );
}
11-3:使用宏时,不允许参数发生变化。
示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增1。
正确的用法是:
b = SQUARE( a );
a++; // 结果:a = 6,即只执行了一次增1。
0 0
- 华为C语言编程规范—代码测试、维护2
- 华为C语言编程规范—代码测试、维护
- 华为C语言编程规范(11)—代码测试、维护
- 华为软件编程规范学习(十一)--代码测试、维护
- 华为软件编程规范学习(十一)--代码测试、维护
- 编程规范 --- 代码测试、维护
- 华为软件编程规范和范例 7 —— 代码编辑、编译、审查和代码测试、维护以及宏
- 华为C语言编程规范—排版
- 华为C语言编程规范—注释
- 华为C语言编程规范—可读性
- 华为C语言编程规范—质量保证
- 华为C语言编程规范(2)—排版
- 华为C语言编程规范(2)—排版
- 华为C语言编程规范—质量保证2
- 华为C语言编程规范
- 华为C语言编程规范
- 华为C语言编程规范(3)—注释
- 华为C语言编程规范(4)—标识符命名
- 使用Animation编辑器编辑动画
- HiveServer2用户名密码验证
- jQuery的height、innerHeight、outerHeight三者的区别
- python练习1-猜数游戏
- C++ 类之间的互相调用
- 华为C语言编程规范—代码测试、维护2
- listView与ScrollView嵌套问题
- iOS开发中的手势触发
- android中的spannable的使用
- 数据库中的增删改查、以及sql语句在android中的使用注意事项、保存头像到本地方法
- 委托、LINQ、EF、工作单元模式
- 原型对象--继承
- 苦练代码能力--(Thinking、Coding)
- 利用ODBC把.accdb格式数据导入到SQL Server