size
的值为12(与预期相符)。
#include <cstdint>
int main(int argc, char *argv[])
{
typedef struct __attribute__((__packed__)) { int8_t value; } time;
typedef struct __attribute__((__packed__)) {
uint8_t msg[8];
// time t1;
uint32_t count;
} theStruct;
theStruct s;
int size = sizeof(s);
return 0;
}
有趣的是,在“时间t1;”删除注释后,size
的值变为16。我原本期望的是13。
我知道(或多或少)这可以通过数据结构填充来解释...
但是,有没有什么方法可以避免这个问题?
该怎么做才能读取size=13
?
13
。你确定你正确地进行了测试吗? - Evan Terantime
是一个结构体?如果它只有一个成员,那是为了语法而存在吗? - Iharob Al Asimi#pragma pack(1) typedef struct { int8_t value; } time; typedef struct { int8_t t1; uint32_t count; uint8_t msg[8]; } theStruct; #pragma pack(1)
? - Iharob Al Asimi__attribute__
这个东西是gcc
特定的,可能会在 MinGW 上引起问题。 - Iharob Al Asimi