V3.7.1引擎宏定义导致 ios SDK 无法编译通过

导致出现问题的宏定义:
#define Record ccstd::unordered_map
位于 engine/native/cocos/base/TypeDef.h 文件中
https://github.com/cocos/cocos-engine/blob/v3.7.1/native/cocos/base/TypeDef.h#:~:text=%23define%20Record%20ccstd%3A%3Aunordered_map

sdk是即构的实时音视频sdk:
https://doc-zh.zego.im/article/2968
https://doc-zh.zego.im/article/196

有朋友遇到过这种问题吗,这个要怎么解决

@zzf_2025

@zzf_2025

引擎的宏定义名称起的是不是有点随意了?

SDK现在是换不了的,恐怕我只能指望你们改改了,下个版本 3.7.2 能改了吗?

1赞

@zzf_2025
定制引擎把这些用到 Record 宏的地方都改掉能行吗?

可以自己定制引擎修复的。
我们评估一下是否在3.7.2改。

这个Record 类型是参考了ts中的类型名称。3.6原生化同步代码就定义了一样的名字。

多谢解答

我认为是有修改的必要的,包括可能存在冲突的其他宏,加个前缀或者后缀更加合理。毕竟如果因为这样的问题定制引擎不太划算,也不利于后续升级引擎,因为现在大部分的需求都可以通过引擎现有机制实现。

如果有计划修复这个问题请告诉我,我仍然希望可以通过升级解决问题

已经提交 PR:https://github.com/cocos/cocos-engine/pull/14474
最终是否合并,还需要评估。

确定在 3.7.3 中修复。

好吧,那我目前先定制引擎解决,不过 3.7.3 版本大概是到什么时候呢?

最简改动可以改成这样:

namespace cc {
    template <typename K, typename V>
    using Record = ccstd::unordered_map<K, V>;
}