DEBUG vs _DEBUG

8

Was ist der Unterschied zwischen DEBUG und _DEBUG in vc ++ in Visual Studio 2008. Gibt es einen Unterschied, weil in meinem Projekt in einigen Modul Präprozessor ist DEBUG und in einigen Modulen ist es _DEBUG.

    
vikky 10.10.2011, 06:56
quelle

3 Antworten

5

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.

    
Stephan 10.10.2011, 07:03
quelle
2

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.

    
Alexander Beletsky 10.10.2011 06:59
quelle
1

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.

    
User43 17.06.2014 05:46
quelle