Da External Variables Wiki:Dichiarazione o definizione in C
Se sono presenti né la parola chiave extern né un valore di inizializzazione, la dichiarazione possono essere sia una dichiarazione o di una definizione. Spetta al compilatore per analizzare i moduli del programma e decidere.
non era in grado di cogliere appieno il significato di questa affermazione rispetto a C. Ad esempio, implica che:
int i;
non è necessariamente una dichiarazione (come ho assumendo fino ora), ma potrebbe essere una definizione così (per definizione della definizione & Dichiarazione sulla stessa pagina web, senza sottintesi)?
In poche parole, è la dichiarazione di cui sopra: a. solo una dichiarazione, oppure b. dichiarazione + definizione?
Riferimento: Variable declaration and definition
Riassunto delle risposte ricevute:
Declaration Definition Tentative Definition Initialized int i; (inside a block) Yes Yes No No int i=5; (inside a block) Yes Yes No Yes(to 5) int i; (otherwise) Yes No Yes Yes(to 0) extern int i; Yes No No No All definitions are declarations but not vice-versa.
Tuttavia, è una buona idea tenere a mente che non tutte le dichiarazioni sono definizioni. –