c - 使用 sizeof 访问结构成员

标签 c data-structures sizeof

我有这段代码,但我不明白为什么它不能编译:

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/

相关文章:

c - 在文本文件中搜索字符串并解析该行(Linux、C)

c++ - 访问C中的数组元素

C sizeof char* 数组

c - 多个 TCP 流相互干扰

c - 返回 DMA 地址的结构指针

java - 如何修复以下代码以便获得输出的反向链表?

php - PHP 有有序字典吗?

TCL 中的类 C 数组

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

c++ - C++结构的字段大小