c语言 - 获取错误"assignment makes pointer from integer without a cast"


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*不同。

相关内容

最新更新