我从下面的代码中得到未知大小错误
atmel_device_info_t *info;
int *ptr = row->offset + (void *) info
这是一个投射问题,我该怎么做才能解决错误?谢谢你的帮助。
答案 0 :(得分:8)
您无法使用void *
指针进行算术运算。这是有道理的,因为它是指向未知类型数据的指针,该数据没有内在大小。指向数据的大小是算术的核心部分。
通常“byte”指针有效:
int *ptr = (int *) ((unsigned char *) info + row->offset);
以上假设row->offset
是字节偏移量,而不是int
偏移量。如果你想要后者,请相应地投射:
int *ptr = (int *) info + row->offset;