In Ihrem eigenen Code können Sie nach jedem beliebigen Makro suchen, also ist es egal, welches Sie verwenden.
Aber die Bibliotheken, die Sie verwenden, können sich anders verhalten. Z.B. Die MSDN-Dokumentation zu assert
states:
Assertionsanweisungen werden nur kompiliert, wenn _DEBUG definiert ist. Wenn _DEBUG nicht definiert ist, behandelt der Compiler Assertions als NULL-Anweisungen.
Also würde ich vorschlagen, immer _DEBUG
zu benutzen.
Bearbeiten: Laut MSDN haben Sie nicht einmal Definieren eines speziellen Debug-Makros, da der Compiler dies für Sie erledigt, sobald Sie eine Debug-Laufzeitbibliothek angeben.
Es kommt tatsächlich darauf an, welche Makro-Verwendung definiert ist. Wie ich weiß Standard VS2008 C ++ Projekt enthält _DEBUG für die Debug-Konfiguration definiert werden. Es kann vorkommen, dass in Ihrem Projekt auch ein benutzerdefiniertes DEBUG-Makro definiert ist. Versuchen Sie, nach DEBUG-Definition zu suchen.
Standardmäßig sollten Sie immer _DEBUG verwenden.
Wenn die Codegenerierung-Einstellung des Projekts etwas mit "debuggen" ist, so wird das _DEBUG Makro vom Compiler definiert. Die entsprechenden Compileroptionen sind / MDd Multithread DLL, dynamische Verknüpfung zu libc, DEBUG / MLd Single-Threaded, statische Verbindung zu libc, DEBUG (VC6) / MTd Multithread, statische Verknüpfung zu libc, DEBUG
Die Compileroption / LDd definiert auch das Makro _DEBUG.
Das DEBUG-Makro ist oft explizit in der Debug-Projekt-Einstellung definiert.
Tags und Links visual-studio-2008 visual-c++