编译错误:从指针强制转换为不同大小的整数

时间:2019-05-11 18:15:17

标签: c

我正在使用以下代码:

#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

1 个答案:

答案 0 :(得分:2)

您的平台的指针大于32位。此外,get()表达式的类型应为offsetof()。您应该:

  • 使用size_t中的标准offsetof

  • 如果您的编译器未提供以上定义,请使用以下替代方法:

    <stddef.h>
  • 如果仍然有问题,请尝试以下一种方法:

    #define OFFSETOF(_s, _m) ((size_t)(&((_s *)0)->_m))