gcc (GCC) 4.7.2
c89
こんにちは、
私は次の関数のようなマクロを持っていますが、複数の行で使用する場合の推奨される使用法は何ですか?中括弧を使用するか、do..while(0)ループを使用することをお勧めします。
通常、私はすべてにdo..while(0)を使用します。しかし、中かっこだけを使用するプロジェクトを見たことがあり、どちらが良いかわかりません。
一方を行います
#define DSO_ERROR(msg, res_handle_module, mem_pool, size) do { \
char *dso_error = apr_palloc((apr_pool_t*)mem_pool, size); \
apr_dso_error((apr_dso_handle_t*)res_handle_module, (char*)dso_error, (apr_size_t)size); \
LOG_ERR("%s dso error %s", (char*)msg, dso_error); \
goto dso_failure; \
} while(0);
中括弧
#define DSO_ERROR(msg, res_handle_module, mem_pool, size) { \
char *dso_error = apr_palloc((apr_pool_t*)mem_pool, size); \
apr_dso_error((apr_dso_handle_t*)res_handle_module, (char*)dso_error, (apr_size_t)size); \
LOG_ERR("%s dso error %s", (char*)msg, dso_error); \
goto dso_failure; \
}
唯一の違いは、セミコロンが中括弧ではなくdo..whileループにプリセットされることです。
提案をありがとう、