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*
,所以我找不到问题所在。
编译器看到的那一刻
command = parseL(cmdStr);
它还不知道parseL()
返回哪种类型,因为它在代码后面定义。
对于这种情况,C 标准定义许多编译器假定int
为返回类型。
由于command
被定义为指针,编译器会阻塞并发出观察到的警告:
error assignment makes pointer from integer without a cast
解决这个问题
- 要么定义整个函数
或者
至少提供函数的原型Cmd** parseL(char*);
在使用之前。
作为旁注:
然后您会遇到下一个错误,因为Cmd**
与Cmd*
不同。