2 Dateien mit selben statischen Variablen. Wie damit umgehen?



  • Hi. Ich habe in meinem Projekt ZLib Quelldateien (ZLib Ordner), weil ich TZipObj nutze. Jetzt habe ich auch eine PDF Komponente(Delphi) die zum komprimieren ebenfalls intern eigenes ZLib nutzt.

    IN ZLib.c steht dann
    #define ZLIB_VERNUM 0x1230

    und unter der PDF Komponente (hpp)
    static const Word ZLIB_VERNUM = 0x1230;

    Dann erhalte ich:
    [BCC32 Fehler] Vpdfzlib.hpp(248): E2040 Deklaration nicht ordnungsgemäß abgeschlossen

    Theoretisch könnte ich vermutlich in der PDF Komponente, in der von automatisch generierten hpp, alles auskommentieren was sich überschneidet. Aber dann könnte ich in anderen Projekten die Komponente nicht mehr nutzen. Was wäre hier die eleganteste Lösung?



  • Hallo

    Ein gutes Beispiel warum man niemals define für Konstanten verwenden soll... und warum namespaces praktisch sind.

    Dein Problem solltest du auch ohne Änderung des Quellcodes der Libraries lösen können, indem du in deinem eigenem Projekt undef benutzt :

    // Dein Quellcode
    #include <zlib.h> // Der Header von zlib
      #define ZLIB_VERNUM 0x1230 // Wird im Header von zlib deklariert
    #undef ZLIB_VERNUM // Hier beendest du das define-Makro
    #include <pdf.h> // Der Header deiner PDF-Komponente
      static const Word ZLIB_VERNUM = 0x1230; // Wird im Header von pdf deklariert
    

    bis bald
    akari



  • Vielen lieben Dank für die tolle schnelle Hilfe! :praise:


Anmelden zum Antworten