【问题标题】:void pointer arithmetic error [duplicate]void指针算术错误[重复]
【发布时间】:2014-04-09 07:46:55
【问题描述】:

我从下面的代码中得到未知尺寸错误,

    atmel_device_info_t *info;

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

这是一个转换问题,我应该如何解决这个错误?谢谢你的帮助。

【问题讨论】:

  • 你能发布错误吗?你还没有初始化info

标签: c++ c windows-ce dfu


【解决方案1】:

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

通常使用“字节”指针:

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

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

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

【讨论】:

  • 特别是如果您的row->offset 值在bytes 中,那么您需要您的指针以byte 为单位工作。
  • 感谢您的解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2021-04-29
  • 2011-06-30
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多