我在创建.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(在project-> properties-> C / C ++ - > Preprocessors->预处理器Definations中),但仍然会出现相同的错误。
任何人都可以指导我为什么会出现这个错误吗?
预先谢谢, 问候, Nagesh
答案 0 :(得分:2)
_DEBUG
始终由预处理器预定义。有关详细信息,请参阅MSDN库中的Predefined Macros和Debug Routines。
NDEBUG
传统上是在“发布”版本中定义的(除了assert()
调用之外),但它不是由预处理器预定义的。
所以看起来你正在编译调试库,但也在某处定义了NDEBUG
。两者同时定义可能是在寻找麻烦; vcppdefinitions.hpp 头文件正在检查并抛出错误。
答案 1 :(得分:0)
_DEBUG
定义在某个地方。
你可以做一件简单的事情:
#ifdef _DEBUG
#undef _DEBUG
#define DEBUG_WAS_DEFINED
#endif
#include "vcppdefinitions.hpp"
//....
#ifdef DEBUG_WAS_DEFINED
#undef DEBUG_WAS_DEFINED
#define _DEBUG
#endif
将调试与非调试库混合时通常会发生错误。