我正在使用以下代码:
#define OFFSETOF(_s, _m) ((uint32_t)(uint32_t *)(&(((_s *)0)->_m)))
typedef struct test
{
uint16_t param0;
uint8_t param1;
} test;
uint32_t uStartAddr = OFFSETOF(test, param1);
但是我得到了这个错误:
error: cast from pointer to integer of different size
答案 0 :(得分:2)
您的平台的指针大于32位。此外,get()
表达式的类型应为offsetof()
。您应该:
使用size_t
中的标准offsetof
宏
如果您的编译器未提供以上定义,请使用以下替代方法:
<stddef.h>
如果仍然有问题,请尝试以下一种方法:
#define OFFSETOF(_s, _m) ((size_t)(&((_s *)0)->_m))