gpt4 book ai didi

c++ - 两个第 3 方库中 uint32 的 Typedef 重新定义 (C2371)

转载 作者:太空狗 更新时间:2023-10-29 21:29:36 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 Box2DSpidermonkey .这两个库都定义了 uint32 类型,当在同一个编译单元中使用这两个库时,这显然会给我一个编译器错误。

b2settings.h (Box2D): typedef unsigned int uint32;

jsotypes.h (蜘蛛猴): typedef unsigned long uint32;

有什么方法可以解决这个冲突而不需要更改第 3 方库的 header 吗?

我感谢每一个提示!

最佳答案

你可以这样做:

#define uint32 Box2D_uint32
#include "Box2D.h"
#undef uint32
#define uint32 Spider_uint32
#include "Spidermonkey.h"
#undef uint32

由于 typedef 只是一个别名,只要这些 header 仅包含声明,这就不会导致 ODR 违规。如果存在使用 uint32 的(结构或内联函数)定义,它违反 ODR。尽管您的编译器可能不够智能,无法检测到这一点,但它仍然可以工作。

但更好的选择是将问题报告给库开发人员,以便他们解决问题,例如命名空间。

关于c++ - 两个第 3 方库中 uint32 的 Typedef 重新定义 (C2371),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com