变量名为TYPE_BOOL(c++代码)与ios宏冲突
variable named TYPE_BOOL(c++ code) is conflicted with ios macro
我正在尝试构建protobufc++到ios。但是它的实现包含一个TYPE_BOOL枚举变量,该变量与ios宏中的TYPE_BOOL冲突。编译失败
如何解决这个问题?
有几个合理的(但不太高明的)选项:
-
#include
任何protobuf头使用TYPE_BOOL
之前你#include
任何iOS头。例子:#include <google/protobuf/descriptor.h> #include <ConditionalMacros.h>
允许你在自己的代码中使用iOS的
TYPE_BOOL
,但不能使用protobuf的TYPE_BOOL
-
#include
是iOS报头,然后是#undef TYPE_BOOL
,然后是#include
。例子:#include <ConditionalMacros.h> #undef TYPE_BOOL #include <google/protobuf/descriptor.h>
允许你在自己的代码中使用protobuf的
TYPE_BOOL
,但不能使用iOS的TYPE_BOOL
。 -
如果你需要两个定义,这可能工作(未测试):
#include <google/protobuf/descriptor.h> // Make a copy of TYPE_BOOL before it is hidden by a macro. const google::protobuf::FieldDescriptor::Type PROTOBUF_TYPE_BOOL = google::protobuf::FieldDescriptor::TYPE_BOOL; #include <ConditionalMacros.h>
现在使用
PROTOBUF_TYPE_BOOL
当你需要Protobuf的定义
注意google/protobuf/descriptor.pb.h
也定义了TYPE_BOOL
。它可以用同样的方式解决,但大多数人不使用该头信息,所以我将其从示例中删除。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 使用ios:ate写入到流会覆盖现有文件
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 链表中写入访问冲突的未知原因
- 如何访问RTCVideoRenderer的帧?(ios)
- C++中的openCV Mat访问冲突
- ios::fmtflags 在 C++ 中是如何工作的?setf() 是如何工作的?
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- C++尝试深度复制唯一指针时出现内存访问冲突
- 错误:使用通用引用的声明冲突
- 如何解决GTest和LibTorch联动冲突
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 两个运营商的一些奇怪的冲突<<
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- VLCKit 与 iOS 项目中的 .mm 文件冲突
- 变量名为TYPE_BOOL(c++代码)与ios宏冲突