相关疑难解决方法(0)

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

所以我在这里有一点立场,我不确定如何继续进行,或者它是否可以修复......

我们使用其他团队提供的第三方SDK,此SDK必须用于我们的应用才能正常运行.

在这个SDK中,有这样的行

#define uint16_t UINT16
#define uint8_t UINT8
Run Code Online (Sandbox Code Playgroud)

问题出在Boost中,更具体地说,ASIO/Details/cstdint.hpp文件中有行

using std::uint16_t
using std::uint8_t
Run Code Online (Sandbox Code Playgroud)

我的应用程序现在不会编译,因为它真的在做

using std::UINT16
using std::UINT8
Run Code Online (Sandbox Code Playgroud)

并且它抱怨这些类型显然不存在于std命名空间中.

这些UINT16和UINT8定义在应用程序中的任何地方都非常大,因此替换它们并不是很可行,我甚至不确定如果我这样做,SDK是否会起作用.

在包含boost头文件之前,我可以尝试#undef所有这些定义吗?然后重新定义它们?看起来很傻,我怀疑它甚至会起作用.

有什么建议?

c++ boost boost-asio c++11

1
推荐指数
1
解决办法
368
查看次数

标签 统计

boost ×1

boost-asio ×1

c++ ×1

c++11 ×1