C和C++上的转换错误无效

Smi*_*yne -4 c c++

这是我的代码.

struct MemoryStruct {
  char *memory;
  size_t size;
};

 struct MemoryStruct *mem = &state->characters;

  mem->memory = realloc(mem->memory, mem->size + len + 1);
Run Code Online (Sandbox Code Playgroud)

当我在'C'中运行此代码并通过gcc编译时,我没有收到任何错误.

但是同样的代码,我在C++中运行并用g ++编译它,我得到错误

错误:从'void*'到'char*'的无效转换[-fpermissive]

为什么它确实在C++中出错并且没有在C中给出错误

jua*_*nza 9

为什么它确实在C++中出错并且没有在C中给出错误

因为这些语言的规则是不同的.在这种特殊情况下,区别在于C++不允许转换void*为char*,而C则允许转换.这就是编译器错误告诉你的.