首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL++中“未在此范围内声明‘assert’

在MySQL++中“未在此范围内声明‘assert’
EN

Stack Overflow用户
提问于 2010-05-26 06:45:24
回答 3查看 26.5K关注 0票数 7

我正在用XCode编译一个项目,其中包含并链接了MySQL++。由于某些原因,我一直收到以下编译器错误:

“‘assert”未在此范围内声明

源自cpool.h,这是MySQL++的一个头文件。有人知道为什么会触发这个吗?

编辑:作为参考,MySQL++是通过Macports安装的。

EN

回答 3

Stack Overflow用户

发布于 2010-05-26 06:55:33

最明显的答案是,"assert.h“没有包含在包含路径中,或者没有在包含路径中找到。另一种解释是,在包含头之后的某个时刻,assert宏是未定义的。

编辑:既然你说assert.h包含在内,我们暂时假设它是被找到的,因为它是一个标准的头文件,那么我们就只剩下我上面提到的最后一种可能性,即宏还没有定义。

因为cpool.h本身不会这样做,所以一定是这样的情况: assert.h早些时候由您自己或间接地由另一个第三方标头包含,并且在此和您包含cpool.h之间发生了不确定的情况。通过将cpool.h include移到文件的顶部,可以很容易地测试这一点。

票数 7
EN

Stack Overflow用户

发布于 2016-03-09 22:16:48

在c++中,添加cassert头应该可以解决您的问题。

代码语言:javascript
复制
#include <cassert>
票数 7
EN

Stack Overflow用户

发布于 2013-07-10 03:55:45

可能是您的包含路径中的另一个库具有不同的"assert.h“文件,并且您无意中包含了该文件,而不是系统的标准。

在Mac OSX上编写使用gstreamer的应用程序时,我遇到了这个问题。事实证明,gstreamer的包含目录(/Library/Frameworks/GStreamer.framework/Headers)包含一个文件" assert.h ",该文件是非标准的,并且不适合替换真正的assert.h。当我将-I/Library/Frameworks/GStreamer.frameworks/Headers添加到我的编译命令中时,突然我的源代码,它只是说"#include “,其中包括gstreamer版本。这导致我的编译失败,并出现与您得到的相同的错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2909059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档