Законно ли иметь аргумент недействительным в макро-функциях? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть код для препроцессора ниже:

#define MYFUNC(void)  getFunc(void)

Это законно в C?

1 Ответ

0 голосов
/ 30 октября 2018

Да, это законно, но, вероятно, не соответствует ожиданиям.

#define MYFUNC(void) getFunc(void)

Это определяет макрос с именем MYFUNC, который принимает один параметр, который в данном случае вы назвали void. Этот макрос вызывает вашу функцию getFunc с тем же параметром, который был передан ей.

В этом случае звоните

MYFUNC( "Hello" );

приведет к тому же, что и

getFunc( "Hello" );

Неясно, ожидаете ли вы этого. Это был бы плохой выбор имени параметра для использования, поскольку это может сбить с толку любого читателя. Хотя void является ключевым словом в C, в препроцессоре C нет ничего особенного.

...