В одному з моїх вихідних файлів проекту я знайшов таке визначення функції C:
int (foo) (int *bar)
{
return foo (bar);
}
Примітка: Поруч немає зірочки foo
, тому це не покажчик функції. Або це? Що відбувається тут з рекурсивним викликом?
a(b);
? Декларація b
як змінної типу a
? Або заклик функціонувати a
з аргументом b
? Різниця синтаксична, і ви не можете знати, який спосіб її навіть розібрати, не шукаючи інформацію про декларації a
; тобто це круглі дужки виклику функції постфіксу або необов'язкові дужки навколо декларатора.