美文网首页
巧用do{...}while(0)

巧用do{...}while(0)

作者: 一丠 | 来源:发表于2019-06-21 15:07 被阅读0次

在学习第一门编程语言时,就已经介绍了顺序分支、条件分支、循环分支。比如循环分支有for、while、do-while语句。在随后的学校及工作中,如果手工循环一般使用for、while,很少使用do-while,感觉用处不大,但现在看来,do-while大有用途。

今天看了些有关do{...}while(0)秒用的文章,觉得写的很好,这里总结下分享给大家。

这里分享的有3个用法,分别是:

1.避免空的宏定义在编译时出现warning。

2.多个语句一起,定义成一个宏时,增加代码适应(特别是条件语句调用这类宏要注意)

3.避免部分goto语句的使用

1.避免空的宏定义在编译时出现warning


2.多个语句一起,定义成一个宏时,增加代码适应(特别是条件语句调用这类宏要注意),以下if(0)和if(1)在实际应用时是if(表达式),表示表达式假和真。

          编译器预处理的时候

          如果使用do{...}while(0)就可以解决上面的问题

          这样就不会出现上面那种有逻辑上不该执行的代码被执行的问题。当然这里也可以用其他方法避免这个问题,比如加大括号{}

          编译器会预处理下面语句

          语句块宏定义时注意的就是这些,另外在写if语句时,尽量后面要加大括号,避免出错,例如上面的if(0){foo();},加上大括号{}也不会有问题。

3.避免部分goto语句的使用

这里就觉得很多代码冗余,然而使用沟通可以很好的解决冗余的部分,代码如下:

然后C语言中过多的使用goto语句会提高程序的灵活性,繁杂点的程序会让程序员捉摸不定,程序跳来跳出,难以捉摸,容易逻辑上产生混淆从而出现BUG。对于上面的这种情况使用do{...}while(0)就可以很好的解决这些跳来跳出的问题,代码结构如下:

愿你出走半生,归来仍是少年…

相关文章

网友评论

      本文标题:巧用do{...}while(0)

      本文链接:https://www.haomeiwen.com/subject/dkpyqctx.html