У меня есть макрос trace()
Я включаю и выключаю его с помощью другого макроса, например
#ifdef TRACE
#define trace(x) trace_val(x, 0)
#else
#define trace(x) 0
#endif
Это генерирует предупреждение: заявление без эффекта
от gcc, когда я вызываю trace()
с TRACE
undefined. После небольшого поиска я обнаружил, что изменение
#define trace(x) 0
на
#define trace(x) (void)0
убирает ошибку. Мой вопрос: почему? Какая разница?