【发布时间】:2015-01-01 13:16:02
【问题描述】:
我正在从内存映射中写入和读取寄存器,如下所示:
//READ
return *((volatile uint32_t *) ( map + offset ));
//WRITE
*((volatile uint32_t *) ( map + offset )) = value;
但是编译器给了我这样的警告:
warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
如何更改代码以删除警告?我正在使用 C++ 和 Linux。
【问题讨论】:
-
转换为
char*- 假设你想要 byte 偏移量。你呢? -
是的,地图是无效的*,谢谢。
-
您需要将
map转换为指向大小为1 的类型的指针。标准保证大小为1 的唯一类型是char,因此您需要将其转换为@ 987654326@. -
@barakmanos:
char和变体(signed char,unsigned char),所以这是一个惊人的 3 种尺寸1!
标签: c++ pointers void-pointers pointer-arithmetic