我想定义一个等于16字节数组的类型。像这样的东西:
typedef uint8_t[16] mynewType;
但我收到了错误。我该如何定义这种类型?
我在这一行上遇到了几个错误,例如:
missing ';' before '['
empty attribute block is not allowed
missing ']' before 'constant'
'constant'
答案 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个字节。