別のtrace()
マクロでオンとオフを切り替えるマクロがあります。
#ifdef TRACE
#define trace(x) trace_val(x, 0)
#else
#define trace(x) 0
#endif
これは、未定義で呼び出すとwarning: statement with no effect
gcc から生成されます。少し検索した後、私は変化することを発見しましたtrace()
TRACE
#define trace(x) 0
に
#define trace(x) (void)0
エラーを黙らせます。私の質問は:なぜですか?違いは何ですか?