Использование (void) foo()
просто невозможно с макросами, потому что эта конструкция опирается на тип возвращаемого значения, которого макрос по своей природе не имеет.Макрос также не знает о семантике или синтаксисе языка Си, поэтому вычисление возвращаемого типа уже невозможно.
Какой смысл в любом случае?Приведение выражений функций к (void)
предназначено для того, чтобы сообщить компилятору: «Вам это не понадобится».Макрос даже не возвращает значение, он просто выполняет текстовую подстановку.Вам не понадобится «вам это не понадобится».
Вместо этого используйте функцию inline
или просто функцию.Если вам нужно делать подобные вещи, то макросы - не тот инструмент.