因为我与C语言代码搞砸它已经有一段时间。
使用gcc在Ubuntu下编译C代码时,我收到以下错误。
我使用的编译代码的命令(如果这些错误是因为编译器的我使用的,请让我知道如何使走开):
gcc -o runnable mycode.C
错误:从无效转换“无效*”到“字符**”
第39行是:
sequence=malloc(sizeof(char *)*seqNum);
序列被声明为:
char **sequence;
SEQNUM声明为:
int seqNum
补充:禁食解决阿龙的实际问题是由上海通用汽车在注释中。 下面的文字都是准确的,希望有所帮助,但手头第二速度解决问题。
你的编译器正在非常硬着颈项转换指针类型(是否使用C ++编译器?),将有明确的转换像
sequence=(char**)malloc(sizeof(char *)*seqNum);
应使错误消失。 或者你也许可以说服编译器去容易对你有某种选项的像
$(CC) --lighten-up-baby code.c
如果这是在一些第三方的代码,你并不真的想破解这可能是可取的。 阅读你的编译器文档,找到您想要的选项。 由于所有gcc
的I手头上(版本4.0和4.2),很高兴与该代码,我不是一个好地方,提供交换机上建议关闭该行为。
你需要投malloc的结果是你想要的类型。
所以:
char **sequence;
...
sequence = (char **)malloc(sizeof(char *) * seqNum);
还要记住,如果你要使用序列,你需要分配的“字符*”个列表,你这样做,但是,你没有指向的分配的内存,它的唯一分配的空间为指针本身的列表。
用于此作为一个错误的部分原因是,不同的指针类型之间分配可以改变所需的对准。 malloc的是保证返回一个指向空间具有适合于任何类型的对准。