Hi, ist jetzt schon eine Weile her das hier etwas geschrieben wurde, jedoch denke ich das noch etwas fehlt. Und zwar:
_DEBUG gibt nicht direkt wieder ob ein Projekt gerade im Debug- oder Release-Mode kompiliert wird. _DEBUG gehört wie auch zB. _cplusplus zu den von MS Visual Studio bereit gestellten Makros, zumindest wenn man deren Infoseite zu diesem Thema glauben schenken mag. _DEBUG ist definiert sofern folgende Einstellungen aktiviert sind:
Projekteigenschaften->Konfigurationseigenschaften->C/C++->Codegenerierung->Laufzeitbibliothek: entweder /LDd, /MDd oder /MTd.
Somit gibt _DEBUG also eigentlich nur die aktuell ausgewählten Laufzeitbibliotheken wieder, nicht aber den Build-Mode.
So, nun ist klar das diese bei Projekten so eingestellt sind das dies nur im Debug-Mode der Fall ist, weshalb man auch ohne Probleme darauf zurückgreifen kann. Stellt man dies jedoch um so kann man nicht mehr garantieren das der Code zu 100% die Wahrheit sagt. Vermutlich ein Grund warum bei dem assert-Makro auf NDEBUG zurückgegriffen wurde.
Wer sich vom dem jedoch selbst überzeugen möchte kann ruhig hier reinschauen:
http://msdn.microsoft.com/en-us/library/b0084kay.aspx
Mlg
S4My