ISO C++禁止在转换为c ++的遗留代码中递增"void*"类型的指针

use*_*898 1 c g++ void-pointers

我知道它的旧问题,但是什么是保持现在转换为c ++的c app(遗留)的旧逻辑的简单解决方案?

在c工作:

void *p;
void *response = malloc(60 * 81);

p = response ;
p+=4;
Run Code Online (Sandbox Code Playgroud)

在g ++中给出:ISO C++禁止递增类型'void*'更新的指针:
如果我将其更改为char*即时获取此错误:

char *p;
char *response = malloc(60 * 81);

error: invalid conversion from ‘void*’ to ‘char*’
Run Code Online (Sandbox Code Playgroud)

char*还可以容纳其他类型(基本的),如short,int,bool?这就是为什么在这个遗留代码中使用它来保存diffident类型,

chm*_*eee 5

最简单的是投射void *char *.由于ISO C也禁止void*算术,因此gcc将其char*视为一种扩展.有关详细信息,请参阅此处:http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Pointer-Arith.html#Pointer-Arith