编写宏的有效方法

e良师益友网​】在编写宏的时候或许会存在一些问题,比如通常的目标是书写一个包含单独的函数调用语句的宏。这意味着“调用者” 需要提供最终的分号, 而宏体则不需要。因此宏体不能为简单的括弧包围的复合语句, 因为如果这样, 调用的时候就会发生语法错, 就像在if/else 语句的if 分支中多了一个else 分句一样。


因此个人认为传统的结局方案就是这样使用:
#define MACRO(arg1, arg2) do { \
/* declarations */ \
stmt1; \
stmt2; \
/* ... */ \
} while(0) /* 没有结尾的; */
当调用者加上分号后, 宏在任何情况下都会扩展为一个单独的语句。优化的编译器会去掉条件为0 的“无效” 测试或分支, 尽管lint 可能会警告。

如果宏体内的语句都是简单语句, 没有声明或循环, 那么还有一种技术, 就是写一个单独的, 用一个或多个逗号操作符分隔的表达式。这种技术还可以“返回” 一个值。

想了解更多编程语言教程集合可登陆e良师益友网。

 

转载于:https://www.cnblogs.com/yuguotianqing/p/4032683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值