2016-10-03 7 views
-3
extern int i; 
void add(); 

int main() 
{ 
    add(); 
    if (i == 0) 
     printf("scope rules\n"); 
} 

void add() 
{ 
    int i; 
} 

ich in diesem Fall immer Fehler selbst Variable i in Add-Funktion definiert istExtern Schlüsselwort Problem in c

aber es wird in folgendem Fall

extern int i; 
void add(); 

int main() 
{ 
    int i; 
    //add(); 
    if (i == 0) 
     printf("scope rules\n"); 
} 

void add(){ 
    //int i; 
} 
+2

Sie müssen ein Buch über C oder C++ lesen, das wird dies im Detail erklären. –

Antwort

2

Das extern Stichwort erzählt keine Buildfehler geben der Compiler, um anzunehmen, dass die Variable an anderer Stelle definiert ist (nicht in dieser bestimmten Datei oder Übersetzungseinheit). Der Name der Variablen wird in der Verknüpfungsstufe aufgelöst. So

, wenn Sie schreiben:

extern int i;

Sie müssen sicherstellen, dass variable i an anderer Stelle definiert (in einer anderen Datei).

Und Vorsicht nicht, dass die extern i und die lokale i in Ihrer add Funktion zu verwechseln - diese lokale Variable Umfang innerhalb der add Funktion und hat nichts mit der extern i Variable zu tun.

void add() 
{ 
    int i; 
}