Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在两个第三方库中为uint32重新定义类型定义(C2371)_C++_Typedef_Box2d_Spidermonkey - Fatal编程技术网

C++ 在两个第三方库中为uint32重新定义类型定义(C2371)

C++ 在两个第三方库中为uint32重新定义类型定义(C2371),c++,typedef,box2d,spidermonkey,C++,Typedef,Box2d,Spidermonkey,在我的应用程序中,我使用和。这两个库都定义了uint32类型,当在同一个编译单元中使用这两个库时,这显然给了我一个编译器错误 b2settings.h(Box2D):typedef unsigned int uint32 h(Spidermonkey):typedef无符号长uint32 是否有任何方法可以解决此冲突,而无需更改第三方库的标题 我感谢每一个提示 您可以执行以下操作: #define uint32 Box2D_uint32 #include "Box2D.h" #undef uin

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

b2settings.h(Box2D):typedef unsigned int uint32

h(Spidermonkey):typedef无符号长uint32

是否有任何方法可以解决此冲突,而无需更改第三方库的标题

我感谢每一个提示

您可以执行以下操作:

#define uint32 Box2D_uint32
#include "Box2D.h"
#undef uint32
#define uint32 Spider_uint32
#include "Spidermonkey.h"
#undef uint32
由于
typedef
只是一个别名,只要这些头文件只包含声明,就不应该导致ODR冲突。如果存在使用uint32的(结构或内联函数)定义,它将违反ODR。虽然您的编译器可能不够聪明,无法检测到这一点,但它仍然可以工作


但更好的选择是向库开发人员报告问题,以便他们使用名称空间等解决问题。

实际上,一个uint32与其他uint32非常相似:)将#includes用名称空间包装。还有其他方法解决此类问题吗?