Cmd* GetCommand() {
Cmd* command;
char* cmdStr = getIn();
command = parseL(cmdStr);
return command;
}
Cmd** parseL(char* str){
Cmd** command;
char* token;
char str2[CMD_MAX_LINE_LENGTH];
strcpy(str2, str);
token = strtok(str2, DELI);
command = ParC(token);
return command;
}
Cmd* parC(char* cmdStr) {
Cmd* command = calloc(1, sizeof(CmdCommand));
if (cmdStr == NULL) {
command->cmd = INVALID;
return command;
}
else
parse2C(cmdStr, command);
return command;
}
嘿,我是C语言的新手,我的代码有问题。
当我运行这部分代码时,我得到一个错误:
assignment makes pointer from integer without a cast.
此行:
command = parseL(cmdStr);
command
来自类型Cmd*
,并且函数parseL
返回Cmd*
,所以我找不到问题所在。
答案 0 :(得分:1)
编译器看到
command = parseL(cmdStr);
它尚不知道parseL()
返回哪种类型,因为它将在代码的后面定义。
对于这种情况, C标准定义为,许多编译器都将int
假定为返回类型。
由于command
被定义为指针,因此编译器阻塞并发出观察到的警告:
error assignment makes pointer from integer without a cast
要解决此问题
或至少提供函数的原型
Cmd** parseL(char*);
之前 被使用。
作为旁注:
您将遇到下一个错误,因为Cmd**
与Cmd*
不同。