2016-09-09 6 views
1

In file1.c ich habe:Wie definiere ich eine globale Strukturvariable richtig?

struct node 
{ 
    int key; 
    jobPtr jobX; 
    struct node *next; 
}; 

struct node *head = NULL; 
void method() 
{ 
... 
} 

I head Zeiger in file2.c verwenden möchten. So füge ich in Header-Datei headerX.h:

extern struct node *head; 

In file2.c ich dies tun:

struct node *head; 
int main() { 

} 

Aber in file2.c ich nicht head verwenden können. Was habe ich falsch gemacht?

UPD

I struct node *head in file2.c Datei entfernt, aber ich nicht noch head Zeiger verwenden kann. Meine IDE erlaubt mir, head in file2.c einzugeben, aber wenn ich Elemente von structure anrufen möchte, gibt mir IDE no suggestions for members of struct node *.

Antwort

3

Sie haben head an zwei Stellen definiert.

Dies ist eine Erklärung:

extern struct node *head; 

Zwar ist dies eine Definition ist:

struct node *head; 

Es sollte nur eine Definition, so entfernen Sie die man in file2.c sein.

EDIT:

Neben der extern Erklärung, Ihre Header-Datei auch die Definition von struct node enthalten sollte:

struct node { 
    // define fields here 
}; 
+0

Sollte ich nur 'Knoten * head'? –

+0

@RomaKarageorgievich Es sollte nur eine Instanz von 'struct node * head' in einer Datei geben. – dbush

+0

Ich aktualisierte Frage könnten Sie es überprüfen? –

Verwandte Themen