Eventuali duplicati:
Effects of the `extern` keyword on C functionsconfusione per quanto riguarda extern con definizioni di funzioni in C
Ok, quindi per qualche ora ora ho letto molto su ciò che significa la parola chiave extern. E c'è un'ultima cosa che mi dà fastidio a non finire che non riesco a trovare alcuna informazione su. Per quanto ho capito la parola extern
fondamentalmente dice al compilatore che la variabile o una funzione è solo una dichiarazione e che è definito da qualche parte, in modo che non si deve preoccupare che, il linker gestirlo.
e l'avviso generato dal compilatore (sto usando gcc 4.2.1) durante la digitazione questo:
extern int var = 10;
supporta questo. Con extern
questo dovrebbe essere una dichiarazione solo in modo che non è corretto.
Tuttavia, la cosa che mi confonde è l'assenza di un avvertimento o nulla quando si digita questo:
extern int func() {return 5;}
Questa è una definizione, e dovrebbe generare lo stesso avvertimento, ma non è così. L'unica spiegazione per questo sono stato in grado di trovare qui è che la definizione sostituisce la parola chiave extern
. Tuttavia, seguendo questa logica, perché non la sovrascrive quando è una definizione di variabile? Oppure la parola chiave ha un significato speciale quando viene utilizzata con le variabili?
sarei molto grato se qualcuno ha spiegato questo a me. Grazie!
l'ultimo punto e virgola mi sta infastidendo. –
Vedere se [questo collegamento] (http://stackoverflow.com/questions/856636/effects-of-the-extern-keyword-on-c-functions) aiuta. –
Il problema deve essere l'inizializzazione della variabile – nabroyan