Утверждения, не собранные из сборки выпуска - PullRequest
4 голосов
/ 28 мая 2011

Я сказал VC ++ скомпилировать мою программу в режиме релиза, но оператор assert () все еще срабатывает. Я думал, что утверждения должны быть скомпилированы из релизных сборок для повышения производительности. В чем дело? Есть ли какие-то другие настройки, которые мне нужно установить, чтобы пропустить их компиляцию?

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Проверьте, какой символ препроцессора вы определяете.Сборка Debug обычно определяет _DEBUG, а сборка Release обычно определяет NDEBUG.Утверждения обычно отключаются при определении NDEBUG.

0 голосов
/ 28 мая 2011

Откройте приложение под отладчиком. Делайте debug-> break, когда диалог подтверждения открыт. Посмотрите на исходный файл, где запускается assert. Теперь посмотрите на настройки сборки этого файла. Если настройки кажутся правильными, и вы загружаете версию выпуска, установите / P и / d1PP в командной строке компилятора, чтобы узнать, откуда исходит ошибочный #define.

Martyn

...