In einer meiner Projektquelldateien habe ich diese C-Funktionsdefinition gefunden:
int (foo) (int *bar)
{
return foo (bar);
}
Hinweis: Neben befindet sich kein Sternchen foo, daher handelt es sich nicht um einen Funktionszeiger. Oder ist es? Was ist hier mit dem rekursiven Aufruf los?
a(b);? Deklaration bals Variable des Typs a? Oder ein Aufruf, amit Argumenten zu funktionieren b? Der Unterschied ist syntaktisch, und Sie können nicht wissen, wie Sie ihn überhaupt analysieren können, ohne die Deklarationsinformationen von nachzuschlagen a. Dies sind die Klammern für Postfix-Funktionsaufrufe oder optionale Klammern um einen Deklarator.