原文:C语言中宏定义(#define)时do{}while(0)的价值

最近在新公司的代码中发现到处用到do ... while ,google了一下,发现Stack Overflow上早有很多讨论,总结了一下讨论,加上自己的理解,do ... while 的价值主要体现在: . 增加代码的适应性 下面的宏定义没有使用do ... while 这样宏定义,单独调用不会出现问题,例如: 宏扩展后变成: foo x bar x 这样调用FOO没有任何问题,但是FOO x ...

2015-12-28 17:00 2 6324 推荐指数:

查看详情

【转】C语言中DEFINE简介及多行定义

要写好C语言,漂亮的定义是非常重要的。定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为定义。那么究竟是用函数好,还是定义好?这就要求我们对二者进行合理的取舍。   我们来看一个 ...

Wed Nov 23 05:08:00 CST 2016 0 5021
c语言定义#define

1. 利用define定义 数值常量   #define 定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎。它可以出现在代码的任何地方,从本行定义开始,以后的代码就就都认识这个了;也可以把任何东西定义。因为编译器会在预编译的时候用真身替换替身,而在 ...

Tue Nov 06 05:36:00 CST 2018 0 701
C语言中do...while(0)的妙用

在linux内核代码中,经常看到do...while(0)的do...while(0)有很多作用,下面举出几个: 1、避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放资源,我们的代码 ...

Fri Oct 25 21:51:00 CST 2013 12 8429
C语言#define拼接定义实现

今天为大家分享一篇C语言#define拼接定义实现方式,具有很好的参考价值,希望对大家有所帮助。 使用场合:拼接两个,一个是传入的。 遇到问题:普通的拼接定义,对于“传入的”不会被替换,反而原封不动的接了上去。 解决方法:经过试验以及网上查阅,以下方法即可以解决上述问题 ...

Sun Oct 25 00:23:00 CST 2020 0 865
c语言定义#define的理解与资料整理

1. 利用define定义 数值常量   #define 定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎。它可以出现在代码的任何地方,从本行定义开始,以后的代码就就都认识这个了;也可以把任何东西定义。因为编译器会在预编译的时候用真身替换替身,而在 ...

Sat Apr 05 17:17:00 CST 2014 6 52307
do {...} while (0) 在定义中的作用

如果你是一名C程序员,你肯定很熟悉,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的定义。下面就是一个例子: #define ...

Tue Jan 28 22:00:00 CST 2014 12 30560
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM