我正在尝试在程序中使用calloc
。使用显式强制转换,它可以编译并正常运行,但是当我尝试remove the explicit cast of malloc时,看到以下错误:
如何在Xcode中没有显式转换calloc
的情况下编译代码?
最佳答案
您正在尝试将C代码编译为C++。
虽然确实有些C代码在C++中也有效,但是您遇到了一个C代码在C++中无效的示例。
也就是说,C++不像C那样提供对void *
的隐式转换。
出于以下三个原因,您应该始终使用C编译器来编译C代码:
人们尝试使用C++编译器编译C代码的唯一原因是他们期望在C++项目中使用其C代码。但是,这是不必要的,因为您通常可以使用C编译器来编译C代码,使用C++编译器来编译C++代码,然后将两者链接在一起。例如:
gcc -c c_code.c
g++ -c cpp_code.cpp
gcc cpp_library.o c_library.o
In C++, it is generally a bad idea to use
*alloc
functions。那些专门使用C++进行编程的人通常不愿使用*alloc
。在C语言中,如link you provided所述,显式转换
void *
总是一个坏主意。那些专门用C编程的人会畏缩不必要的样板,这些样板可能会引入错误。关于c++ - 如何在Xcode中构建没有calloc转换结果的程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33772456/