#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_HUnd 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 #endifWann 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.