重複の可能性:
C/C++ マクロに無意味な do/while ステートメントと if/else ステートメントがあるのはなぜですか?
出くわした C ソース コードがdo...while(0)
ループでラップされることがあるのはなぜですか?
do {
parser->http_errno = e;
parser->error_lineno = __LINE__;
} while (0)
これに対して、なぜそれを使用するのですか:
parser->http_errno = e;
parser->error_lineno = __LINE__;
これはスレッドセーフと関係があると思われますが、よくわかりません。