Xcode 呼叫C++;main.mm中的库导致编译错误-验证声明与宏冲突
main.mm中包含的标题中有以下代码:Xcode 呼叫C++;main.mm中的库导致编译错误-验证声明与宏冲突,xcode,compiler-errors,objective-c++,berkeley-db,Xcode,Compiler Errors,Objective C++,Berkeley Db,main.mm中包含的标题中有以下代码: 1. virtual int truncate(DbTxn *, u_int32_t *, u_int32_t); 2. virtual int upgrade(const char *name, u_int32_t flags); 3. virtual int verify( 4. const char *, const char *, __DB_STD(ostream) *, u_int32_t); 前两行用于上下文和显示正在工作的
1. virtual int truncate(DbTxn *, u_int32_t *, u_int32_t);
2. virtual int upgrade(const char *name, u_int32_t flags);
3. virtual int verify(
4. const char *, const char *, __DB_STD(ostream) *, u_int32_t);
前两行用于上下文和显示正在工作的内容。第三行和第四行有以下错误:
宏“verify”传递了4个参数,但只接受1个
“验证”声明为“虚拟”字段
如果我在verify声明的末尾添加了一个随机字符,比如verifyx
,那么文件编译就不会出现问题。verify
是否保留
编辑:
我的main.mm文件:
#import <Foundation/Foundation.h>
#import "db_cxx.h"
int main (int argc, const char * argv[])
{
return 0;
}
这意味着在某个地方有一个#define verify(x).
。它不是在C++中保留的,但你所包括的是定义它。
快速
fgrep -r verify /usr/include | fgrep '#define'
收益率,在很多其他事情中
/usr/include/AssertMacros.h: #define verify(assertion) __Verify(assertion)
在包含了所需的所有OS X/iOS头之后,在包含bdb之前,应该可以安全地进行
#undef验证。可能在berkeley db头中?我也检查过了。在标题中发布了它的所有两个实例:-(抱歉,我不理解问题的细微差别。您的编辑帮助了我。请查看更新的答案。我自己刚找到AssertMacros.h,但不知道如何解决问题。谢谢!
fgrep -r verify /usr/include | fgrep '#define'
/usr/include/AssertMacros.h: #define verify(assertion) __Verify(assertion)