NDEBUG не должен быть определен, когда _DEBUG определен - PullRequest
2 голосов
/ 14 декабря 2011

Я получаю сообщение об ошибке при создании проекта .exe.Ошибка: Компиляция ...

1>  KsmXmlXalan.cpp
1>c:\newdir\xalan-c-r786300\inc\xalanc\include\vcppdefinitions.hpp(73): fatal error C1189: #error :  NDEBUG must not be defined when _DEBUG is defined.
1>  KsmXmlJB.cpp
1>  KsmXml.cpp
1>c:\newdir\xalan-c-r786300\inc\xalanc\include\vcppdefinitions.hpp(73): fatal error C1189: #error :  NDEBUG must not be defined when _DEBUG is defined.
1>  KsmXalan.cpp
1>c:\newdir\xalan-c-r786300\inc\xalanc\include\vcppdefinitions.hpp(73): fatal error C1189: #error :  NDEBUG must not be defined when _DEBUG is defined.

Даже если я не определил _DEBUG (в проекте-> свойства-> C / C ++ -> Препроцессоры-> Определения препроцессора), но все еще получаю ту же ошибку.

Может ли кто-нибудь подсказать мне, почему он дает эту ошибку?

Заранее спасибо, С уважением, Нагеш

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

_DEBUG всегда предопределен препроцессором при сборке с использованием библиотек времени выполнения «Debug». См. Предопределенные макросы и Процедуры отладки в библиотеке MSDN для получения дополнительной информации.

NDEBUG традиционно определяется в сборке «Release» (среди прочего, для удаления вызовов assert()), но препроцессором это не предопределено.

Похоже, что вы компилируете против отладочных библиотек, но также где-то определены NDEBUG. И то, и другое определено одновременно, вероятно, вызывает проблемы; заголовочный файл vcppdefinitions.hpp проверяет это и выдает ошибку.

0 голосов
/ 14 декабря 2011

_DEBUG определяется где-то по пути.

Вы можете сделать простую вещь, хотя:

#ifdef _DEBUG
#undef _DEBUG
#define DEBUG_WAS_DEFINED
#endif

#include "vcppdefinitions.hpp"

//....

#ifdef DEBUG_WAS_DEFINED
#undef DEBUG_WAS_DEFINED
#define _DEBUG
#endif

Ошибка обычно возникает при смешивании отладки с не отладочными библиотеками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...