Proje kaynak dosyalardan birinde, bu C işlev tanımını buldum:
int (foo) (int *bar)
{
return foo (bar);
}
Not: yanında yıldız işareti yoktur foo
, bu nedenle bir işlev işaretçisi değildir. Yoksa öyle mi? Burada özyinelemeli çağrıda neler oluyor?
a(b);
? b
Bir değişken türü olarak beyan a
? Ya a
da argümanla işlev çağrısı b
? Fark sözdizimseldir ve bildirim bilgisine bakmadan bile ayrıştırmanın hangi yolunu bilemezsiniz a
; yani bu postfix işlevi çağrı parantezleri veya bir bildirici çevresindeki isteğe bağlı parantezlerdir.