Да, это законно, но, вероятно, не соответствует ожиданиям.
#define MYFUNC(void) getFunc(void)
Это определяет макрос с именем MYFUNC
, который принимает один параметр, который в данном случае вы назвали void
. Этот макрос вызывает вашу функцию getFunc
с тем же параметром, который был передан ей.
В этом случае звоните
MYFUNC( "Hello" );
приведет к тому же, что и
getFunc( "Hello" );
Неясно, ожидаете ли вы этого. Это был бы плохой выбор имени параметра для использования, поскольку это может сбить с толку любого читателя. Хотя void
является ключевым словом в C, в препроцессоре C нет ничего особенного.