c - 从 void* 到 char** 的无效转换

标签 c gcc casting malloc

我已经有一段时间没有弄乱 C 代码了。

在 Ubuntu 下使用 gcc 编译 C 代码时出现以下错误。

我用来编译代码的命令是(如果这些错误是由于我使用的编译器造成的,请告诉我如何解决):

gcc -o runnable mycode.C 

error: invalid conversion from ‘void*’ to ‘char**’

第 39 行是:

sequence=malloc(sizeof(char *)*seqNum);

序列声明为:

char **sequence;

seqNum 声明为:

int seqNum

最佳答案

补充: sgm 在评论中提供了 Arron 实际问题的快速解决方案。下面的文字都是准确的,希望对您有所帮助,但对于手头的问题来说是二流的解决方案。


您的编译器对指针转换非常严格(您使用的是 C++ 编译器吗?),添加一个显式转换,如

sequence=(char**)malloc(sizeof(char *)*seqNum);

应该会使错误消失。或者,您可以通过一些选项说服编译器对您轻松一些,例如

$(CC) --lighten-up-baby code.c

如果这是在您不想破解的某些第三方代码中,这可能更可取。阅读您的编译器文档以找到您想要的选项。由于我手头的所有 gcc(版本 4.0 和 4.2)都对这些代码感到满意,所以我不适合提供有关关闭此行为的开关的建议。

关于c - 从 void* 到 char** 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185452/

相关文章:

c++ - 获取 C# 输出字符串参数值到 C++ BSTR*?

c - 销毁双线程二叉树

c - 如何使用但不公开 c99 库中的内联函数?

c - 确定预处理器中的优化级别?

gcc - 获取当前的 GCC 架构

c++ - 将 std::distance 的结果与无符号类型进行比较

c - 所以break语句只是打破c中的内部for循环或两者

c - 如何在C中交换半字节?

c - 从与预期最终位置不同的位置链接共享库

java - 将枚举转换为列表