繁体   English   中英

处理代码以重新定义int类型(uint16_t,int16_t等),而Boost不喜欢它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM