我已经有一段时间没有弄乱 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/