如何定义等于16字节的类型

时间:2018-05-22 14:22:01

标签: c++ c++11 typedef

我想定义一个等于16字节数组的类型。像这样的东西:

typedef uint8_t[16] mynewType;

但我收到了错误。我该如何定义这种类型?

我在这一行上遇到了几个错误,例如:

missing ';' before '['  
empty attribute block is not allowed    
missing ']' before 'constant'
'constant'  

5 个答案:

答案 0 :(得分:6)

typedef就像一个声明,但前面有一个额外的typedef

所以,如果

uint8_t my_array[16]; 

声明一个新数组。

typedef uint8_t my_array[16]; 

使my_array成为这种数组的类型。

答案 1 :(得分:4)

只需

titleView

答案 2 :(得分:2)

像数组变量一样:

typedef uint8_t mynewType [16];

答案 3 :(得分:2)

typedef unsigned char mynewType [16];

是在任何平台上分配16个字节的可移植方式; CHAR_BIT

答案 4 :(得分:1)

您可以使用具有该大小的数组字段的结构。但是您仍然需要设置单个字节值。如果要以不同方式访问不同的内存块,也可以使用union。

// simple data structure of 16 bytes
struct pack_16 {
    uint8_t data[16];
}
// sizeof(pack_16) == 16

// multi type access of 16 bytes
union multi_pack_16 {
    uint8_t  uint_8[16];
    uint16_t uint_16[8];
    uint32_t uint_32[4];
    uint64_t uint_64[2];
}
// sizeof(multi_pack_16) == 16

此外,根据您的编译器,可以定义uint128_t数据类型,其大小为16个字节。