Мой код полон вызовов assert(condition)
. В отладочной версии я использую g++ -g
, который запускает мои утверждения. Неожиданно те же утверждения запускаются и в моей релизной версии, скомпилированной без опции -g
.
Как я могу полностью отключить свои утверждения во время компиляции? Должен ли я явно определять NDEBUG
в любой сборке, которую я создаю, независимо от того, является ли она отладочной, выпускной или чем-то еще?
-g
эквивалентно-g2
.-g3
может быть лучшим выбором, так как он предоставляет наиболее символическую информацию. Например, в-g3
будут доступны символические #define. Однако мне кажется, что некоторые цепочки инструментов задыхаются от-g3
. Кроме того, многие внешние библиотеки также зависят от-DDEBUG
для "отладочных" сборок (Posix подтверждает-DNDEBUG
только для "выпускных" сборок). - person jww   schedule 04.09.2012