Headerdatei einer DLL



  • Hallo!

    Ich habe in C++ eine eigene DLL erstellt. Den Code dafür habe ich aus einem Buch abgeschrieben, und er funktioniert auch. Einen Teil davon verstehe ich aber nicht ganz, und er ist im Buch auch kaum erklärt.
    Die DLL besteht aus einer cpp-Datei und einer Headerdatei. In der Headerdatei steht folgendes:

    #ifndef __MYDLL_H
    #define __MYDLL_H
    #ifndef __MYDLL__
    #define __MYDLLLIB__ __declspec(dllimport)
    #else
    #define __MYDLLLIB__ __declspec(dllexport)
    #endif

    __MYDLLLIB__ unsigned int Function1 ();

    #endif

    Der Code ist laut Buch dafür da, dass die gleiche Headerdatei für das DLL-Projekt selbst, und für andere Projekte (wo ich die DLL einbinden will) verwendet werden kann.
    Prinzipiell verstehe ich die Sache auch: Die Funktion wird je nachdem, ob sich die Headerdatei im DLL-Projekt oder in einem anderen befindet entweder exportiert oder importiert.

    Die ersten 3 Zeilen machen mir aber Probleme:
    #ifndef __MYDLL_H
    #define __MYDLL_H
    #ifndef __MYDLL__

    Hier wird vom Precompiler anscheinend überüft ob irgend welche Flags (nicht) gesetzt sind. Woher kommen die Flags aber eigentlich und was sagen sie aus?

    Danke im Voraus!

    mfg



  • OK, Problem gelöst.
    Es wird in der CPP-Datei definiert.

    mfg



  • #ifndef __MYDLL_H
    #define __MYDLL_H

    #endif

    Das ist dazu da, dass die Header-Datei nicht mehrfach eingebunden wird (bzw. besser gesagt deren Inhalt)



  • Oje. 😞
    Zwei führende Unterstriche in __MYDLL_H, wo auf globaler Ebene sogar schon einer verboten ist.


Anmelden zum Antworten