编译报错 warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]

编译原因:

使用void*指针进行算术运算。

因为指针运算需要知道指针步长,即指针指向的对象的大小

int* p;
char* c;
p+1
c+1

如上述运算,+1的结果是不一样的,对p+1会前进4个字节,对c+1只会前进1个字节。

警告解决方案:

在void*指针变量前加一个(uint8_t *),例如:

//command.payload是指向void的指针类型
//修改之前:
void* ptr = command.payload + command.len;
//修改之后:
void* ptr = (uint8_t *)command.payload + command.len;


版权声明:本文为MashiMaroJ原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。