#define



  • Hallo,

    wenn ich ein #define in einem Header-File habe, wie weit geht dann seine Sichtbarkeit.
    Muss ich es in jedem Header-File deklarieren?

    #if defined(_MSC_VER) || defined(__BORLANDC__)
    # define DLL_EXPORT __declspec(dllexport)
    # else
    # define DLL_EXPORT
    #endif
    
    #ifndef __MYCLASS_H
    #define __MYCLASS_H
    

    Und ist es egal ob ich meine inclusion-guards davor oder danach mache?

    Danke!
    mfg,
    shed



  • Hi,

    was sind denn "inclusion-guards" Anderes als eine spezielle Anwendung von Präprozessor-ifs ? Nichts ! Eben !

    Hast Du Dir einen "inclusion-guard" mal angesehen ? Dein Code beantwortet selbst Deine Frage:

    #if defined(_MSC_VER) || defined(__BORLANDC__)
    # define DLL_EXPORT __declspec(dllexport)
    # else
    # define DLL_EXPORT
    #endif
    

    Wann wird DLL_EXPORT auf was gesetzt ? Wie, wenn _MSC_VER oder __BORLANDC__ gesetzt sind ?
    Wie sonst ?
    ... und was lernst Du daraus über die Frage, ob #defines durchgeführt werden nach #ifs ? 😉

    Gruß,

    Simon2.



  • Erstens heißt das Ding "Include-Guards" 😉

    Und zweitens: #define-Makros sind gültig von der Zeile, in der sie angelegt wurden, bis zum Ende der Übersetzungseinheit (die ÜE entspricht deinem CPP-File, nachdem alle #include, #if-#endif und #define's aufgelöst wurden) - außer due hebst sie vorher per #undef wieder auf.


Anmelden zum Antworten