1. 程式人生 > >C/C++中do{...}while(0)的作用

C/C++中do{...}while(0)的作用

如果 就是 strong 意思 語法 如同 ++ 期望 lse

一:do{...}while(0)在定義宏時的作用。其實就是能夠讓你定義的宏按照你期望的方式執行而沒有語法或邏輯錯誤,無論這個宏是在if判斷裏面使用還是放在其他別的地方使用。

1.在後面要加分號,使調用如同函數,例如

#define DELETE_POINTER(p) \

do              \

{               \

if(NULL != p) \

delete p; \

p = NULL; \

} \

while(0)

調用:

int a = 0;

int * p = &a;

DELETE_POINTER(p);

2.當放在if中使用時

#define FUN() \

fun1(); \

fun2();

這個宏的意思是,當調用FUN()宏時,同時調用fun1()和fun2(),但是如果這個宏在調用的時候是放在if判斷判斷下面的,那麽

if(a > 0)

FUN();

展開後變成

if(a > 0)

fun1();

fun2();

這樣就變成無論a是否大於零,那麽fun2()都會被執行。

而如果用do while(0)代替,那麽就能夠按照實際期望的那樣被執行

3.當放在if else中使用時

#define FUN() \

fun1(); \

fun2();

二:do{...}while(0)可以替換goto語句

C/C++中do{...}while(0)的作用