Frage zu const und #define
-
Hi (gleich der 2. Thread...).
Ich möchte in einer Headerdatei bestimmte Optionen für den Code festlegen, die andere Dateien betreffen. Nun bin ich gerade dabei, das ganze etwas übersichtlicher zu gestalten (mit Namespaces und so weiter). Problem ist, dass es für Makros keine Namespaces gibt.Folgendes erkennt der Compiler ja sofort:
//#define SETTING_ENABLE_LOG 1 // ... #ifdef SETTING_ENABLE_LOG machwas(); tudas(); unddas(); #endifDefiniere ich SETTING_LOG_ENABLE nicht, so wird der Code gar nicht mehr mit einkompiliert.
Versteht der Compiler aber auch bei "echten" (?) Konstanten, dass der Code nicht mehr benötigt wird? Beispiel:
namespace Settings { const bool Logging = false; } // ... if (Settings::Logging) { machwas(); tudas(); unddas(); }Würde der Code trotzdem mit einkompiliert, oder erkennt der Compiler das schon zur Compilezeit? Bin mir da verdammt unsicher und testen kann man es ja nicht >_<
Gruß
-
Im Release Modus sollte er soetwas rausnehmen. Wenn du dir nicht sicher bist, kannst du ja mal ein paar MB text dort einfügen und in ein array speichern. Mal schauen, wie die file größe danach ausschaut.
oder einfach mit nem disassembler nachschauen
-
Gute Idee - und Tatsache: Es funktioniert! Dankeschön

Gruß