我有这段代码,但我不明白为什么它不能编译:
typedef struct
{
uint32_t serial_number;
uint32_t ieee_address[6];
} FACTORY_CONFIG;
...
// Unlock flash (only the portion we write on)
error = FLASHD_Unlock ( writeaddress, writeaddress + sizeof ( FACTORY_CONFIG.serial_number ), 0, 0 );
当我运行它时,我得到这个错误:
Error[Pe018]: expected a ")"
当我改变
FACTORY_CONFIG.serial_number
到
FACTORY_CONFIG
,它编译并且一切正常。我不确定,我可以检查结构内类型的大小吗?
最佳答案
你不能像那样访问 C 中类型的成员。但是,您可以从实际对象中获取 sizeof
。由于 sizeof
是一个编译时构造,因此这些对象甚至不必是有效的。所以以下将起作用:
sizeof(((FACTORY_CONFIG *)0)->serial_number)
如果你经常使用它,或者只是为了提高可读性,你可以用它制作一个宏。
关于c - 使用 sizeof 访问结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463703/