Wiki dice:Come definire la variabile extern insieme alla dichiarazione?
Il
extern
parola chiave significa "dichiarare senza definire". In altre parole, è un modo per dichiarare esplicitamente una variabile o forzare una dichiarazione senza una definizione. È anche possibile definire una variabile in modo esplicito, vale a dire forzare una definizione. Viene eseguito assegnando un valore di inizializzazione a una variabile.
Ciò significa, una dichiarazione extern
che inizializza la variabile funge da definizione per quella variabile. Così,
/* Just for testing purpose only */
#include <stdio.h>
extern int y = 0;
int main(){
printf("%d\n", y);
return 0;
}
dovrebbe essere valido (compiled in C++11). Ma quando si compila con opzioni -Wall -Wextra -pedantic -std=c99
in GCC 4.7.2, produce un avvertimento:
[Warning] 'y' initialized and declared 'extern' [enabled by default]
che non dovrebbe. Per quanto ne so,
extern int y = 0;
è effettivamente la stessa
int i = 0;
cosa sta andando male qui?
[Questo] (http://stackoverflow.com/questions/4268589/warning-in-extern-declaration) potrebbe essere d'aiuto. Non la risposta accettata, ma quella di [AndreyT] (http://stackoverflow.com/users/187690/andreyt). Nota in particolare l'ultima riga della risposta: _ Disattiva questo avviso nelle impostazioni del compilatore (e, per favore, scrivi una lettera scortese al team GCC) ._ – devnull
@devnull; Sì .. – haccks
@devnull; Uomo. Mi hai salvato. Ne stavo scherzando circa un'ora! Grazie mille :) – haccks