Fehler bei der Neudefinition in .h-Dateien

7
%Vor% Die Datei

​​smatrix.h enthält die Dateien list.h und matrix.h. Wenn ich diese Header-Dateien in die smatrix.h-Datei einfüge, bekomme ich

%Vor%

Wenn ich diese Heder-Dateien aus unserer Datei smatrix.h genommen habe, ist der Fehler verschwunden, aber es klagt über den Matrix-Typ im Funktionsparameter. Ich möchte Funktionen aufrufen, die in den Dateien list.h und matrix.h in der Datei smatrix.c definiert sind. Was soll ich tun? Vielen Dank im Voraus ..

    
codereviewanskquestions 25.03.2011, 08:18
quelle

4 Antworten

16

Mögliches Problem mehrerer Einschlüsse.

Versuchen Sie, Ihre Header-Dateien mit

zu schützen

Datei list.h

%Vor%

Datei matrix.h

%Vor%

Es wird verhindern, dass Sie auch Neudefinitionen haben, wenn Sie eine Schleife in Header-Einschlüssen haben.

    
M'vy 25.03.2011, 08:21
quelle
8

Sie müssen Wächter in Ihren Header-Dateien einschließen.

    
akira 25.03.2011 08:20
quelle
2

Nun von Ihrem geposteten Code, was meiner Meinung nach fehlt, steht am Anfang jeder * .h Datei:

%Vor%

oder ein

%Vor%

wenn Ihr Compiler dies unterstützt.

Wenn der Header mehrfach aus verschiedenen Quellen eingefügt wird, erhalten Sie Fehler bei der Neudefinition.

    
ds27680 25.03.2011 08:29
quelle
1

Sie haben wahrscheinlich smatrix.h und list.h in eine andere Datei eingefügt. Du solltest das vermeiden. Der übliche Weg ist, include guards zu verwenden.

Dies sind Makros, die Sie mit #ifdef am Anfang der Datei (mit #endif am Ende) und #define sie innerhalb von #ifdef ... #endif überprüfen, und stellen so sicher, dass Sie auch das selbe enthalten Datei mehrmals, der Compiler wird es nur einmal beim ersten Mal lesen und den ganzen Rest überspringen.

    
littleadv 25.03.2011 08:24
quelle

Tags und Links