(void)0 - пустое выражение, хак, компилер не генерирует код. Макро
можно было просто сделать пустым и в локальном случае это может
сработать, но не во всех. Проблема будет там, где пустой макрос
будет включен в код. Пустое выражение обрамленное подавляющими прагмами и завернутое в идиому "пустого блока/оператора" скажем так... Выглядит странновато.
(void)0 это было именно выражение, ты изменил семантику asset_param(). Смысл его изменился. Для тебя сейчас это просто "я изменил текст компиляется же, что тебе надо" но вообще такое делать не следует. Будет компилироваться только в твоем конкретном случае. Где-то сломается.