-1

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

    atmel_device_info_t *info;

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

这是一个铸造问题,我应该怎么做才能解决这个错误?感谢您的帮助。

4

1 回答 1

8

你不能用void *指针便携地做算术。这是有道理的,因为它是一个指向未知类型数据的指针,该数据没有内在大小。指向数据的大小是进行算术运算的核心部分。

通常一个“字节”指针起作用:

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

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

int *ptr = (int *) info + row->offset;
于 2014-03-06T15:16:11.107 回答