per un errore di battitura, lascio lo a
lì. Quando sono andato per la compilazione, il compilatore ha riferito:Dovrebbe int a, f() compilare {}?
missing a ',' between declaration of 'a' and 'f'
codice:
int a
f(void)
{
}
ed era molto surpresing dal momento che non ho mai ottenuto alcun messaggio di errore come questo e non sapevo ho potuto mettere una virgola lì e appena compilato bene (in più di un compilatore che ho provato):
int a,
f(void)
{
}
ma naturalmente non era mia intenzione, ma invece di int f(void){}
. Io do una prova in un altro compilatori, ma non ha funzionato e ha segnalato un errore di sintassi come questo (in clang):
error: expected ';' after top level declarator.
La mia domanda è: quale è corretto? dovrebbe o non dovrebbe essere compilato? cosa dice lo standard di quel comportamento?
Non lo userò poiché è un po 'brutto mettere la variabile e le funzioni divise per virgola (proprio come per un prototipo di funzione). Sono solo curioso.
MODIFICA: aggiunto void
nel parametro funzione. In realtà volevo scrivere una funzione con parametri vuoti
L'ex _seems_ è valido C89 e quest'ultimo non è valido. Per C99, sono abbastanza sicuro, entrambi non sono validi (e gcc si rifiuta di compilare con '-std = c99 -pedantic'). 'int a, f();' (quest'ultima è una dichiarazione di funzione (la funzione che prende il numero non specificato di argomenti che restituiscono 'int') senza definizione) tuttavia, sarebbe valida C99. A quale standard sei interessato? – mafso
Bello sapere, rimuoverò il mio commento, perché in realtà non significa dire più di quanto ha fatto il tuo, ma in qualche modo nella rilettura, lo hai detto più pulito di me. –