Подтвердить что ты не робот

Автоматическая #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 для компилятора? Как?

4b9b3361

Ответ 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.