do{}while(false)を使ったマクロ
#define ASSERT() {*((int*)0xcdcdcdcd)=0;} #define ASSERT() do{*((int*)0xcdcdcdcd)=0;}while(false)
前者より後者の方が良いとのこと。
if (error()) ASSERT(); else printf("OK");
とした時、前者だとコンパイルエラーになる。
#define ASSERT() {*((int*)0xcdcdcdcd)=0;} #define ASSERT() do{*((int*)0xcdcdcdcd)=0;}while(false)
前者より後者の方が良いとのこと。
if (error()) ASSERT(); else printf("OK");
とした時、前者だとコンパイルエラーになる。