您当前的位置:首页 > 计算机 > 编程开发 > C语言

非计算机专业C语言初学者编程规范(学生用)―宏

时间:12-30来源:作者:点击数:

(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))

(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 );
}

(3)使用宏时,不允许参数发生变化。

示例:如下用法可能导致错误。

#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增1。

正确的用法是:

b = SQUARE( a );
a++; // 结果:a = 6,即只执行了一次增1。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门