Pensavo di conoscere la sintassi C abbastanza bene, fino a quando ho provato a compilare il seguente codice:Che cos'è una dichiarazione di inoltro dei parametri?
void f(int i; double x)
{
}
mi aspettavo che il compilatore di viaggio, e lo ha fatto, ma non ho ricevuto il messaggio di errore:
test.c:1:14: error: parameter ‘i’ has just a forward declaration
ho poi provato
void fun(int i; i)
{
}
che riesce con
test.c:1:17: error: expected declaration specifiers or ‘...’ before ‘i’
e infine
void fun(int i; int i)
{
}
che, con mia grande sorpresa, riesce!
Non ho mai visto questa sintassi nel codice C del mondo reale. Qual è il suo uso?
Che cosa è il tuo compilatore? Immagino sia un bug o un'estensione (non si compila con _clang 2.8_). – md5
@ md5: GCC. Passa anche con '-std = c99'; Credo che avrei dovuto provare CLang, che viaggi. –