У меня есть отладочная информация в моей программе:
#define DEBUG
...
#ifdef DEBUG
std::cout << "[RE_words] " << m_re << std::endl;
#endif
а DEBUG определяется в моей программе вручную. Я всегда комментирую строчку, когда делаю релизную версию. В Visual Studio также есть конфигурации для версий Debug и Release, которые обрабатывают командную строку и т. Д., Используемую для компиляции. Могу ли я также использовать конфигурацию "Отладка" для автоматического определения DEBUG компилятору? Как?
Ответ 1 · рейтинг 81 · Jan Holecek
Visual Studio автоматически определяет символ _DEBUG для сборок отладки (и NDEBUG для сборок без отладки).
Другой способ сделать это - перейти в настройки проекта -> свойства конфигурации -> C / C ++ -> препроцессор и вручную отредактировать определения препроцессора.
См. Также:
В этом ответе более подробно объясняются различия между _DEBUG и NDEBUG.
Этот ответ объясняет назначение символа NDEBUG и то, определен ли он стандартом.
Ответ 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 для режима отладки.