tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
2323
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dotti dotti ist offline Mitglied Bronze
    Registriert seit
    May 2005
    Beiträge
    35
    Hallo,

    Ich habe folgendes Problem,

    Ich verwende eine LIB die diese zwei Definitionen beinhaltet.

    Jatzt hab ich diese Definitionen folgender maßen in mein Programm übernommen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    #ifndef DWORD
    typedef unsigned long DWORD;
    #endif
     
    #ifndef BOOL
    typedef int BOOL;
    #endif

    Trotz der #ifndef BOOL Anweisung bekomme ich folgende Fehlermeldung

    Code :
    1
    2
    3
    4
    5
    6
    
    In file included from KopplungSMA.c:17:
    Programm.h:26: error: redefinition of typedef âDWORDâ
    ./LIBs/lib_yasdi-1-7-2-src/smalib/smadef.h:60: error: previous declaration of âDWORDâ was here
    Programm.h:30: error: redefinition of typedef âBOOLâ
    ./LIBs/lib_yasdi-1-7-2-src/smalib/smadef.h:68: error: previous declaration of âBOOLâ was here
    make[1]: *** [KopplungSMA.o] Error 1

    Eigentlich sollte das #ifndef das doch verhintern oder?


    mfg


    Klaus D.
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Du vermischst verschiedene Dinge miteinander. Ein typedef ist ein neuer Alias/Name für einen vorhanden Typ. Und dann gibt es noch Präprozessormakros.

    Präprozessormakros erstellt man mit #define. Diese kann man dann auch mit #ifndef auf Nicht-Existenz prüfen.

    Bei typedefs ist das nicht der Fall. Allerdings ist es in C++ (nicht in C!) erlaubt ein typedef mehrfach zu definieren, vorrausgesetzt es wird für ein und derselbe Typ ein Alias definiert:
    Code cpp:
    1
    2
    3
    4
    5
    
    typedef unsigned int uint;
     
    typedef unsigned int uint; // in C++ OK!
     
    typedef unsigned long uint; // Konflikt zu vorheriger Definition.
    Gruß

    \edit: Du könntest ja stattdessen wirklich Präprozessormakros verwenden:
    Code c:
    1
    2
    3
    
    #ifndef BOOL
    #define BOOL int
    #endif
    Geändert von deepthroat (14.11.07 um 20:31 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    dotti dotti ist offline Mitglied Bronze
    Registriert seit
    May 2005
    Beiträge
    35
    Hallo deepthroat,

    Danke dir für die super schnelle Hilfe,
    so in etwa hatte ich das schon fast vermutet.

    mfg


    Klaus D.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Antworten: 3
    Letzter Beitrag: 10.03.10, 13:10
  3. Kein Internet trotz "Verbindug hergestellt"
    Von Headymaster im Forum Netzwerke
    Antworten: 8
    Letzter Beitrag: 28.03.09, 18:17
  4. C# Trotz "Show Desktop" Knopf nicht minimieren
    Von Terrance & Philipp im Forum .NET Windows Forms
    Antworten: 6
    Letzter Beitrag: 02.11.05, 13:40
  5. Film trotz "stop"-Befehl weiter laufen lassen
    Von Receiver im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 15.02.04, 02:27