Автоматическая #defines в соответствии с конфигурацией Debug/Release в Visual Studio 2010
У меня есть отладочный вывод в моей программе следующим образом:
#ifdef DEBUG
std::cout << "[RE_words] " << re << std::endl;
try {
boost::regex regex(re);
std::cout << "[RE_words] " << "passed" << std::endl;
} catch (exception& e) {
std::cout << "[RE_words] " << "failed: " << e.what() << std::endl;
}
#endif
и DEBUG
определяется в моей программе вручную. Я всегда комментирую строку, когда я делаю выпускную версию. В Visual Studio 2010 существуют также "Конфигурация" для версий Debug vs Release, которые обрабатывают командную строку и т.д., Используемые для компиляции. Могу ли я также использовать конфигурацию "Отладка" для автоматического определения DEBUG
для компилятора? Как?
Ответы
Ответ 1
Visual Studio автоматически определяет символ _DEBUG для отладочных сборников (и NDEBUG для не-отладочных сборников).
Другой способ сделать это - перейти к настройкам проекта → свойства конфигурации → C/С++ → препроцессор и вручную отредактировать определения препроцессора.
См. также:
Этот ответ объясняет различия между _DEBUG и NDEBUG более подробно.
В этом ответе объясняется назначение символа NDEBUG и определяется ли он стандартом.
Ответ 2
Используйте _DEBUG
. Visual С++ определяет это для конфигурации Debug. Ознакомьтесь с директивами препроцессора для конфигурации Debug в диалоговом окне свойств проекта.
Ответ 3
Я тоже думал, что мне просто нужно посмотреть свойство препроцессора и удалить _DEBUG. Visual Studio пытается помочь, установив _DEBUG, если вы выберете одну из опций библиотеки времени выполнения отладки.
На странице свойств проекта Свойства конфигурации\C/С++\Генерация кода опция, выбранная для библиотеки времени выполнения, влияет на несколько определений. При выборе библиотеки отладки (/MTd или /MDd) параметр _DEBUG определяет .
См. MSDN/MD,/MT...
для получения дополнительной информации о коммутаторах. На основе этих параметров задано несколько определений #define. Они довольно невидимы при попытке найти, кто устанавливает #define, прежде чем вы даже включите любые файлы заголовков!
Ответ 4
Да, вы должны проверить страницу параметров проекта, Компилировать- > Расширенные параметры компиляции.
Однако VS по умолчанию автоматически определяет директиву DEBUG для режима Debug.