В одном из исходных файлов моего проекта я нашел определение функции C:
int (foo) (int *bar)
{
return foo (bar);
}
Примечание: рядом нет звездочки foo, поэтому это не указатель на функцию. Либо это? Что здесь происходит с рекурсивным вызовом?
a(b);? Объявление bв качестве переменной типа a? Или вызов функции aс аргументом b? Разница в синтаксисе, и вы не можете знать, каким образом ее анализировать, не просматривая информацию объявления a; т. е. те скобки постфиксного вызова функции или необязательные скобки вокруг декларатора.