DEBUG против _DEBUG - PullRequest
       3

DEBUG против _DEBUG

8 голосов
/ 10 октября 2011

В чем разница между DEBUG и _DEBUG в vc ++ в Visual Studio 2008. Есть ли разница, потому что в моем проекте препроцессором в каком-то модуле является DEBUG, а в каком-то модуле - _DEBUG.

Ответы [ 3 ]

5 голосов
/ 10 октября 2011

В своем собственном коде вы можете проверять любой макрос, который хотите, поэтому не имеет значения, какой из них использовать.

Но используемые вами библиотеки могут вести себя по-разному. Например. документация MSDN о assert состояниях:

Утверждения утверждения компилируются, только когда определено _DEBUG. Когда _DEBUG не определен, компилятор обрабатывает утверждения как нулевые операторы.

Поэтому я бы предложил всегда использовать _DEBUG.

Редактировать: Согласно MSDN вам даже не нужно определять какой-либо специальный макрос отладки, потому что компилятор сделает это за вас, как только вы укажете библиотеку времени отладки. 1017 *

2 голосов
/ 10 октября 2011

Это на самом деле зависит от того, какое использование макроса определено.Как я знаю, проект C200 VS2008 по умолчанию содержит _DEBUG, который нужно определить для конфигурации отладки.Может случиться так, что в вашем проекте также определен собственный макрос DEBUG.Попробуйте найти определение DEBUG.

По умолчанию вы всегда должны использовать _DEBUG.

1 голос
/ 17 июня 2014

Если параметр Codegeneration в проекте имеет значение «debug», то макрос _DEBUG определяется компилятором.Соответствующие параметры компилятора: / MDd Multithreaded DLL, динамическая связь с libc, DEBUG / MLd, однопоточная, статическая связь с libc, DEBUG (VC6) / MTd, многопоточная, статическая связь с libc, DEBUG

./ LDd также определяет макрос _DEBUG.

Макрос DEBUG часто явно определяется в параметре Debug-Project-Setting.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...