24个字节,应该是configuration_t 这样的结构体类型的空间大小,官方的该结构体类型(typedef)是这样定义的:
/* A dummy structure to save in flash. */
typedef struct
{
uint32_t boot_count;
char device_name[16];
bool config1_on;
bool config2_on;
} configuration_t;
因为其结构体中,有一个uint32_t 类型(占用4个字节),所以,configuration_t 类型的结构体占用空间的大小,一定是4的倍数,所以,不用 + 3 是没有问题的。
如果,一个结构体这样定义:
/* test 1 */
typedef struct
{
bool config1_on;
bool config2_on;
} configuration_t_test;
那么,你计算这个结构体占用空间的大小sizeof(configuration_t_test),应该就不是4的倍数了,应该是2。这个时候,如果想把这个结构体存储到FLASH中,那么,是否就需要一个word的空间,一个word的空间是4个字节。所以,把sizeof(configuration_t_test) + 3在除以4 ,不就得到1了么,我理解的 + 3, 是为了取整用的。🤣