Wiki sagt:Wie definiert man externe Variable mit Deklaration?
Das
extern
Schlüsselwort bedeutet "ohne definieren, deklarieren". Mit anderen Worten, es ist eine Möglichkeit, eine Variable explizit zu deklarieren oder eine Deklaration ohne Definition zu erzwingen. Es ist auch möglich, eine Variable explizit zu definieren, d. H. Eine Definition zu erzwingen. Dies geschieht, indem Sie einer Variablen einen Initialisierungswert zuweisen.
Das heißt, eine extern
Erklärung, dass die Variable initialisiert dient als eine Definition für diese Variable. So
/* Just for testing purpose only */
#include <stdio.h>
extern int y = 0;
int main(){
printf("%d\n", y);
return 0;
}
gültig sein soll (compiled in C++11). Aber wenn es mit Optionen -Wall -Wextra -pedantic -std=c99
in GCC 4.7.2 kompiliert wird, erzeugt eine Warnung:
[Warning] 'y' initialized and declared 'extern' [enabled by default]
welche nicht. AFAIK,
extern int y = 0;
ist das Gleiche wie
int i = 0;
Was falsch ist hier los?
[This] (http://stackoverflow.com/questions/4268589/warning-in-extern-declaration) könnte auch helfen. Nicht die akzeptierte Antwort, sondern die von [AndreyT] (http://stackoverflow.com/users/187690/andreyt). Beachten Sie insbesondere die letzte Zeile der Antwort: _Schalten Sie diese Warnung in den Compiler-Einstellungen aus (und schreiben Sie dem GCC-Team bitte einen groben Brief) ._ – devnull
@devnull; Ja .. – haccks
@devnull; Mann. Du hast mich gerettet. Ich habe ungefähr eine Stunde damit verbracht! Vielen Dank :) – haccks