Я читаю книгу о C, и где-то в коде авторов я нашел определение прототипа функции, затем макрос с тем же именем, и нет определения самой функции ни в любом .h
или .c
.
Я имею в виду что-то вроде этого:
int print_my_stufff(char *stuff);
#define print_my_stuff(A) (printf("%s\n", A))
/* and print-my-stuff() function never defined anywhere else */
Код работает, но я просто не понимаю, зачем ему нужен прототип функции в первую очередь? Не мог он просто написать макрос? Какой смысл? Является ли это компилятором, что макрос должен быть оценен для выражения, которое возвращает int
или что? Удаление прототипа, похоже, не изменяет поведения. Автор этого не объяснил.