如何解决错误:使用未声明的标识符“ assert”
我有一段代码,其中包含一些Boost标头。编译后,我收到类似
的错误/usr/local/include/boost/smart_ptr/shared_ptr.hpp:1041:9: error: use of undeclared identifier 'assert'
BOOST_ASSERT( deleter_.use_count() <= 1 );
^
/usr/local/include/boost/assert.hpp:60:29: note: expanded from macro 'BOOST_ASSERT'
# define BOOST_ASSERT(expr) assert(expr)
^
这些错误仅在Windows和MacOS上发生。
在Boost标头无效之前,明确包含<cassert>
或<assert.h>
。
解决方法
您需要#include <cassert>
来引入assert
实现。
相应地定义或不定义NDEBUG
是您的工作。
我很惊讶,Boost不能为您做到这一点-您是否正确使用了Boost文件(即包括您应该使用的文件)?
,事实证明,我的包含路径(我的自定义文件)中有一个名为Assert.h
的文件。在Windows和MacOS使用的不区分大小写的文件系统上,这将掩盖实际上定义assert.h
宏的原始assert
头。
因此,解决方案只是重命名我的assert-header文件。
(由于https://github.com/luckybulldozer/VisualSFM_OS_X_Installer/issues/15,我找到了解决方案)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。