Cha*_*Kim 0 c c++ pointers compiler-errors g++
例如,下面的行可以用 gcc 编译,
float *m = calloc(rows*cols, sizeof(float));
Run Code Online (Sandbox Code Playgroud)
但是 g++ 抱怨指针类型不匹配,如下所示。
../../../../../YOLO/darknet/src/gemm.c:33:22:错误:从“void*”到“float*”的无效转换
(也许 callc 在 C++ 中总是返回 void* ?)
我可以让 g++ 忽略这个指针类型不匹配错误吗?(我找到了这个链接,但他们说这是不可避免的。如果我们可以在 C++ 代码中使用 C 代码而无需在任何地方修复它,那就太好了。)
(也许 callc 在 C++ 中总是返回 void* ?)
是的。calloc总是返回void*。在 C 和 C++ 中。
我可以让 g++ 忽略这个指针类型不匹配错误吗?
我建议不要尝试让编译器忽略该错误,而是修复程序。你可以像这样修复它:
float *m = static_cast<float*>(std::calloc(rows*cols, sizeof(float)));
Run Code Online (Sandbox Code Playgroud)
或者,如果翻译单元是用 C 编写的,则用 C 编译器编译它。
如果我们可以在 c++ 中使用 c 代码
解决方案:不要在另一种语言中使用一种语言。用 C 写 C,用 C++ 写 C++。通过将翻译单元链接在一起,语言之间的交互是可能的。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |