Автоматически # определяет в соответствии с конфигурацией Debug / Release в Visual Studio - PullRequest
35 голосов
/ 05 января 2011

У меня есть отладочный вывод в моей программе, например:

#define DEBUG
...
#ifdef DEBUG
    std::cout << "[RE_words] " << m_re << std::endl;
#endif

и DEBUG определены в моей программе вручную.Я всегда закомментирую строку, когда делаю релизную версию.В Visual Studio есть также конфигурации для Debug vs Release версий, которые обрабатывают командную строку и т. Д., Используемые для компиляции.Могу ли я также использовать конфигурацию «Отладка» для автоматического определения DEBUG для компилятора?Как?

Ответы [ 4 ]

68 голосов
/ 05 января 2011

Visual Studio автоматически определяет символ _DEBUG для сборок отладки (и NDEBUG для сборок без отладки).

Еще один способ сделать это - перейти в настройки проекта -> свойства конфигурации -> C / C ++ -> препроцессор и вручную отредактировать определения препроцессора.

См. Также:
Этот ответ объясняет различия между _DEBUG и NDEBUG более детально.
Этот ответ объясняет назначение символа NDEBUG и определяет, определяется ли он стандартом.

8 голосов
/ 05 января 2011

Используйте _DEBUG. Visual C ++ определяет это для конфигурации отладки. Проверьте директивы препроцессора для конфигурации отладки в диалоге свойств вашего проекта.

3 голосов
/ 13 декабря 2013

Я тоже думал, что мне просто нужно посмотреть на свойство препроцессора и удалить _DEBUG.Visual Studio пытается помочь, установив _DEBUG, если вы выберете один из параметров библиотеки времени отладки.

На странице свойств проекта Свойства конфигурации \ C / C ++ \ Generation параметр, выбранный для Библиотека времени выполнения , влияет на несколько определений.При выборе библиотеки отладки ( / MTd или / MDd ) _DEBUG определяют равным .

См. MSDN / MD, / MT ... для получения дополнительной информации о коммутаторах.Есть несколько #defines, которые устанавливаются на основе этих опций.Они довольно невидимы, когда пытаются найти, кто устанавливает #define, прежде чем вы добавите заголовочные файлы !!

0 голосов
/ 05 января 2011

Да, вы должны проверить страницу параметров проекта, Компиляция-> Дополнительные параметры компиляции. Однако VS по умолчанию автоматически определяет директиву DEBUG для режима отладки.

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