在Windows uint16_t
上仅是typedef
中的unsigned short
(来自VS2017 stdint.h
):
typedef unsigned short uint16_t;
但是在uint16_t
中具有GCC stdint.h
的QNX6上,它指向_Uint16t
:
typedef _Uint16t uint16_t;
在include\sys\compiler_gnu.h
中声明的如下:
typedef unsigned int _GCC_ATTR_ALIGN_u16t __attribute__((__mode__(__HI__)));
typedef _GCC_ATTR_ALIGN_u16t _Uint16t __attribute__((__aligned__(2)));
在这种情况下使uint16_t
对齐的原因是什么?
问题来自下面的代码:
using T = uint16_t;
std::map<T, unsigned char> m;
哪个警告我:
warning: ignoring attributes on template argument 'T {aka short unsigned int}' [-Wignored-attributes]
我应该切换回using T = unsigned short;
来防止这种警告吗?