请选择 进入手机版 | 继续访问电脑版
贠老师培训群:150322713    贠老师QQ:767708506

贠老师office培训-excel学习网

 找回密码
 立即注册
点击咨询贠老师
查看: 173|回复: 7

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

[复制链接]

3172

主题

3269

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22860
发表于 2015-12-26 11:30:12 | 显示全部楼层 |阅读模式
(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。
回复

使用道具 举报

1

主题

880

帖子

7

积分

注册会员

Rank: 2

积分
7
发表于 2016-2-5 13:03:16 | 显示全部楼层
大神啊!豁然开朗。。。。。。
回复 支持 反对

使用道具 举报

1

主题

880

帖子

7

积分

注册会员

Rank: 2

积分
7
发表于 2016-2-24 10:48:59 | 显示全部楼层
楼主不错
回复 支持 反对

使用道具 举报

2

主题

1063

帖子

156

积分

注册会员

Rank: 2

积分
156
发表于 2016-8-30 22:23:38 | 显示全部楼层
很不错的帖子,又学到了,力挺
回复 支持 反对

使用道具 举报

0

主题

775

帖子

783

积分

高级会员

Rank: 4

积分
783
发表于 2016-12-30 21:58:48 | 显示全部楼层
一下子解决了我工作当中的难题,谢谢楼主,非常感谢!
回复 支持 反对

使用道具 举报

1

主题

922

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2017-2-18 21:39:07 | 显示全部楼层
学习贵在坚持哦
回复 支持 反对

使用道具 举报

0

主题

890

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2017-4-12 18:13:24 | 显示全部楼层
楼主不错
回复 支持 反对

使用道具 举报

3

主题

1016

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2018-12-5 15:13:16 | 显示全部楼层
大神啊!豁然开朗。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



陕ICP备15003731号  

贠老师培训 GMT+8, 2018-12-14 23:14 , Processed in 0.222603 second(s), 28 queries .

快速回复 返回顶部 返回列表