Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Автоматические #defines в соответствии с конфигурацией Debug / Release в Visual Studio

Автор вопроса: Felix DombekОтветов: 4

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

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

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

c++visual-studiovisual-studio-2010compilation

Ответы

Ответ 1 · рейтинг 81 · Jan Holecek

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

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

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

Ответ 2 · рейтинг 8 · Moo-Juice

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

Ответ 3 · рейтинг 3 · Quijote

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

На странице свойств проекта Configuration Properties \ C / C ++ \ Code Generation параметр, выбранный для Runtime Library, влияет на несколько определений. При выборе библиотеки отладки (/ MTd или / MDd) _DEBUG определяет is em > установить.

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

Ответ 4 · Nickolay Olshevsky

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы