当我不转换malloc的结果时,为什么编译器会抱怨?

Ale*_*win 2 c malloc casting compiler-errors

我正在检查不需要显式地转换malloc调用结果的代码,但每当我尝试这样做时,编译器都会抛出错误.

char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
Run Code Online (Sandbox Code Playgroud)

MBy*_*ByD 9

如果使用C++编译器而不是C编译器,则会发生这种情况.因为C++需要显式转换.问题不只是(un)转换malloc结果,而是任何指向其他指针的void指针.

  • 通常最好将C和C++代码分成不同的模块.C++编译器无法编译C. (4认同)