tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1300
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Dj Mike
    Dj Mike Dj Mike ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    93
    Hallo,
    ich habe folgendes Problem:
    Ich habe ein Datentypmodul test, in dem ich eine Struktur hab:

    test.h:
    Code :
    1
    
    struct test;
    test.cpp:
    Code :
    1
    2
    3
    4
    
    #include "test.h"
    struct test{
         ...
    };
    main.cpp:
    Code :
    1
    2
    3
    4
    
    #include "test.h"
    void main(){
         test foobar;
    }
    Beim kompillieren bekomme ich die Fehlermeldung:
    Undefined structure 'test' in function main()
    Wenn ich die Struktur in der Headerdatei selbst komplett definiere bekomme ich folgenden Fehler:
    Multiple declaration for 'test'
    und
    Earlier declaration of 'test'
    Wo ist der Fehler?
    Bin für jede Hilfe dankbar.

    Micha
     
    Benötigen Sie Hilfe im Umgang mit Ihrem Computer:
    PCCare Computer Hilfe - Dienstleistungs GbR Aachen

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Dj Mike Beitrag anzeigen
    Hallo,
    ich habe folgendes Problem:
    Ich habe ein Datentypmodul test, in dem ich eine Struktur hab:

    test.h:
    Code :
    1
    
    struct test;
    test.cpp:
    Code :
    1
    2
    3
    4
    
    #include "test.h"
    struct test{
         ...
    };
    main.cpp:
    Code :
    1
    2
    3
    4
    
    #include "test.h"
    void main(){
         test foobar;
    }
    Beim kompillieren bekomme ich die Fehlermeldung:
    Undefined structure 'test' in function main()
    Um eine Variable eines best. Typs zu definieren muß dieser Typ vorher komplett definiert worden sein. Du mußt also die Struktur im Header vollständig definieren. Es ist höchstens erlaubt, einen Zeiger bzw. eine Referenz auf einen unvollständig definierten Datentyp zu definieren.
    Zitat Zitat von Dj Mike Beitrag anzeigen
    Wenn ich die Struktur in der Headerdatei selbst komplett definiere bekomme ich folgenden Fehler:
    Multiple declaration for 'test'
    und
    Earlier declaration of 'test'
    Wo ist der Fehler?
    Du hast vermutlich die Datei test.h mehrfach eingebunden. Es ist nicht erlaubt eine Struktur mehrfach zu definieren - auch wenn die Definitionen gleich sind.

    Üblicherweise schützt man eine Datei gegen Mehrfacheinbinden so:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    
    // Datei: test.h
     
    #ifndef TEST_H
    #define TEST_H
     
    // ...
     
    #endif

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von Dj Mike
    Dj Mike Dj Mike ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    93
    Ich hatte diesen Code schon benutzt, um gegen Mehrfacheinbinden zu schützen!
     
    Benötigen Sie Hilfe im Umgang mit Ihrem Computer:
    PCCare Computer Hilfe - Dienstleistungs GbR Aachen

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Dann zeig mal etwas Beispielcode wo es nicht funktioniert.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Dj Mike
    Dj Mike Dj Mike ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    93
    Ich hab meinen Fehler gefunden, ich hatte in der Header Datei
    Code :
    1
    
    #pragma once
    benutzt und nicht
    Code :
    1
    2
    3
    4
    5
    6
    
    #ifndef TEST_H
    #define TEST_H
     
    // ...
     
    #endif
    Dann funktioniert es auch, wenn man die Struktur in der Header Datei definiert.
    Danke für die Hilfe.
    Micha
     
    Benötigen Sie Hilfe im Umgang mit Ihrem Computer:
    PCCare Computer Hilfe - Dienstleistungs GbR Aachen

Ähnliche Themen

  1. MySQL-Verbindung funktioniert nicht "Call to undefined function mysql_connect()"
    Von dochamburg im Forum Relationale Datenbanksysteme
    Antworten: 31
    Letzter Beitrag: 13.12.11, 08:35
  2. Antworten: 2
    Letzter Beitrag: 24.01.10, 16:31
  3. Antworten: 3
    Letzter Beitrag: 04.10.09, 08:30
  4. Antworten: 15
    Letzter Beitrag: 24.05.09, 20:09
  5. cygwin linker "undefined reference"
    Von freddy23 im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 22.10.04, 23:06