我正在尝试用C编写一个shell程序。以下函数应该用于获取用户行输入。我一直收到“尝试使用malloc的行上的void*
到char**
错误的无效转换。
我不明白为什么。谁能解释一下?
char *get_line_input(void)
{
int scan;
int buff_size = 1024;
int argument_tracker = 0;
char *line = malloc(sizeof(char) * buff_size);
while (1) {
scan = getchar();
if (scan == '\n') {
line[argument_tracker] = '\0';
return line;
} else {
line[argument_tracker] = scan;
}
argument_tracker++;
}
}
答案 0 :(得分:2)
您可能正在使用C ++编译器/ C ++模式,其中没有从void*
到T*
的隐式转换。在C中,您不应该得到此错误,因为void*
可以在没有显式转换的情况下分配给任何其他数据指针。
您可以使用C编译器,或者必须使用C ++编译器,然后进行适当的转换。
答案 1 :(得分:1)
因为For i As Integer = 0 To dgv.RowCount - 1
无法在c ++中隐式转换为void *
,并且您可能正在使用c ++。快速修复:
char *