W jednym z moich plików źródłowych projektu znalazłem definicję funkcji C:
int (foo) (int *bar)
{
return foo (bar);
}
Uwaga: obok nie ma gwiazdki foo
, więc nie jest wskaźnikiem funkcji. Albo to jest? Co się tutaj dzieje z połączeniem rekurencyjnym?
a(b);
? Deklaracja b
jako zmiennej typu a
? Lub wezwanie do działania a
z argumentem b
? Różnica jest składniowa i nie możesz wiedzieć, w jaki sposób ją parsować, nie sprawdzając informacji o deklaracji a
; tzn. są to nawiasy wywołujące funkcję Postfiks lub opcjonalne nawiasy wokół deklaratora.