[英]Dealing with code redefining int types(uint16_t, int16_t, etc) and Boost not liking it
所以我在这里有些退缩,我不确定确切如何进行,或者甚至可以解决...
我们使用另一个团队提供的第三方SDK,必须使用此SDK才能使我们的应用正常运行。
在此SDK中,有类似这样的行
#define uint16_t UINT16
#define uint8_t UINT8
问题出在Boost中,更具体地说,ASIO / Details / cstdint.hpp文件的行
using std::uint16_t
using std::uint8_t
我的应用程序现在无法编译,因为它确实在做
using std::UINT16
using std::UINT8
而且它抱怨那些类型显然不在std名称空间中。
这些UINT16和UINT8定义在非常大的应用程序中随处使用,因此替换它们不是很可行,而且即使我这样做,也不知道SDK是否可以运行。
我可以尝试在包含boost头文件之前#undef所有这些定义? 然后在重新定义它们之后? 似乎很愚蠢,我怀疑它是否仍然可以正常工作。
有什么建议吗?
问题出在Boost中,更具体地说,ASIO / Details / cstdint.hpp文件的行
倒过来了 这个问题显然在重新定义完全通用类型名的标头中。
最可行的解决方案是在添加任何Boost头之前都不包含SDK头。
拼凑而成的解决方法是取消定义宏。 (如果您问我,那条路就是疯狂):
#ifdef uint16_t
#undef uint16_t
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.