Kompilierfehler "'struct" Typ Redefinition "obwohl es die erste Definition dafür ist

9

Alles funktionierte gut, bis ich etwas Code von der Hauptdatei in eine neue Klasse verschoben habe, dann hatte ich den folgenden Fehler:

  

Fehler C2011: 'color1': 'struct' Typ Neudefinition

%Vor%

Irgendeine Idee?

    
Homam 28.04.2011, 21:12
quelle

3 Antworten

43

Wenn der Compiler sagt, dass es neu definiert wurde, dann ist es wahrscheinlich.

Meine psychischen Debugging-Fähigkeiten sagen mir, dass Sie die Struktur aus einer Quelldatei in eine Header-Datei verschoben haben und die Include-Wächter in dieser Kopfzeile vergessen haben, die dann mehrfach in eine Quelldatei eingefügt wird.

EDIT: Als allgemeine Regel empfehle ich generell, führende Unterstriche zu vermeiden. In einigen Fällen (zum Beispiel gefolgt von einem Großbuchstaben) sind sie für die Implementierung reserviert, und es ist am einfachsten, niemals die führende _ zu verwenden, anstatt zu hoffen, dass Sie sich an alle Regeln erinnern.

    
Mark B 28.04.2011, 21:14
quelle
12

Aus dem obigen Auszug kann ich nicht ableiten, dass etwas nicht stimmt.

In der Regel bedeutet dieser Fehler jedoch, dass Sie dieselben Header-Dateien mehrmals einschließen. Vergessen Sie nicht, Standard-Wächter für Include-Dateien hinzuzufügen?

%Vor%     
beduin 28.04.2011 21:16
quelle
3

Sie können die Definition der Struktur in einer Header-Datei haben. Habe

%Vor%

am Anfang des Headers, wo die Struktur definiert ist, löst es das Problem.

    
Jake OPJ 02.11.2016 18:54
quelle

Tags und Links