void指针算术错误

时间:2014-03-06 15:13:12

标签: c++ c windows-ce dfu

我从下面的代码中得到未知大小错误

    atmel_device_info_t *info;

    int *ptr = row->offset + (void *) info

这是一个投射问题,我该怎么做才能解决错误?谢谢你的帮助。

1 个答案:

答案 0 :(得分:8)

您无法使用void *指针进行算术运算。这是有道理的,因为它是指向未知类型数据的指针,该数据没有内在大小。指向数据的大小是算术的核心部分。

通常“byte”指针有效:

int *ptr = (int *) ((unsigned char *) info + row->offset);

以上假设row->offset是字节偏移量,而不是int偏移量。如果你想要后者,请相应地投射:

int *ptr = (int *) info + row->offset;