在我的应用程序中我使用Box2D http://www.box2d.org/ and 蜘蛛猴 https://developer.mozilla.org/en/spidermonkey。这两个库都定义了 uint32 类型,这显然在同一编译单元中使用这两个库时给我带来了编译器错误。
b2settings.h (Box2D): typedef unsigned int uint32;
jsotypes.h (Spidermonkey): typedef unsigned long uint32;
有什么方法可以解决此冲突而不需要更改第 3 方库的标头吗?
我很感谢每一个提示!
你可以这样做:
#define uint32 Box2D_uint32
#include "Box2D.h"
#undef uint32
#define uint32 Spider_uint32
#include "Spidermonkey.h"
#undef uint32
Since typedef
只是一个别名,只要这些标头仅包含声明,就不会导致 ODR 违规。如果存在使用 uint32 的(结构体或内联函数)定义,则它will违反 ODR。尽管您的编译器可能不够智能,无法检测到这一点,但它仍然可以工作。
但更好的选择是将问题报告给库开发人员,以便他们修复该问题,例如命名空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)