C语言(复杂宏的两种写法)

听说复杂宏的编写方式有两种,一种是用do...while(0),一种是语句表达式。内核源代码中顶喜欢他们俩,不可不认识哟!

拓展:

第一,do...while(0)形式实现复杂宏,请看:

do...while(0)确保了整个复合语句只被执行一遍,注意到最后的while(0)后面是不带分号的,因为一般我们在调用一个宏的时候会带上分号,比如上述的宏:

SEARCH(i, some_array, m);

第二种编写复杂宏的方式是语句表达式,例如我们可以将上述代码改成:

这两种形式的区别是,复合语句表达式可以作为右值,给另一个变量赋值。而do...while(0)不可以。

原文发布于微信公众号 - 秘籍酷(mijiku040)

原文发表时间:2019-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券