在QNX

时间:2019-03-27 08:23:46

标签: c++ gnu memory-alignment qnx

在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;来防止这种警告吗?

0 个答案:

没有答案