gpt4 book ai didi

c - 出现错误 "assignment makes pointer from integer without a cast"

转载 作者:行者123 更新时间:2023-11-30 14:46:06 47 4
gpt4 key购买 nike

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

解决此问题

  • 要么定义整个函数
  • 至少 提供函数的原型(prototype)

    Cmd** parseL(char*);

使用之前。

<小时/>

附注:

您将遇到下一个错误,因为 Cmd**Cmd* 不同。

关于c - 出现错误 "assignment makes pointer from integer without a cast",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546660/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com