#define IF_CLS_CTRL_RX_BUSY(m) do {(m) &= ~IF_CTRL_RX_BUSY;} while (0)
在工程代码的代码中,我们经常会遇到 do{ } while(0)
这种样式的宏定义,这句代码编译后的效果如下,为了更好的理解,
eg:
宏定义在进行编译时,编译器只会简单得进行替换,do能确保大括号里的逻辑能被执行,而while(0)能确保该逻辑只被执行一次,即与没有循环时一样。
#define IF_CLS_CTRL_RX_BUSY(m) do {(m) &= ~IF_CTRL_RX_BUSY;} while (0)
在工程代码的代码中,我们经常会遇到 do{ } while(0)
这种样式的宏定义,这句代码编译后的效果如下,为了更好的理解,
eg:
宏定义在进行编译时,编译器只会简单得进行替换,do能确保大括号里的逻辑能被执行,而while(0)能确保该逻辑只被执行一次,即与没有循环时一样。