gpt4 book ai didi

c - 警告 : initialization makes pointer from integer without a cast

转载 作者:太空狗 更新时间:2023-10-29 15:16:21 25 4
gpt4 key购买 nike

我只会让事情变得简单:

这是我构建的函数,它将创建一个新的 dnode:

struct dnode *dnode_create() {
return calloc(1, sizeof(struct dnode));
}

我是这样调用它的:

struct dnode *newnode = dnode_create();

我不明白这与整数有什么关系?

最佳答案

callocdnode_create 在您尝试使用时没有原型(prototype)。

这意味着它采用 int 返回类型,因此是您的警告消息。

为确保 calloc 的原型(prototype)可见,请包含 stdlib.h 头文件。

如果是dnode_create,你必须自己做,方法是:

  • 在使用之前定义函数(在给定的源文件中);或
  • 在使用前声明原型(prototype)。

在此基础上展开,假设它们在单个翻译单元(简单地说,源文件)中以这种方式排序,这两个都可以工作。第一:

struct dnode *dnode_create (void) {         // declare & define
return calloc(1, sizeof(struct dnode));
}
:
{ // inside some function
struct dnode *newnode = dnode_create(); // use
}

或者:

struct dnode *dnode_create (void);          // declare
:
{ // inside some function
struct dnode *newnode = dnode_create(); // use
}
:
struct dnode *dnode_create (void) { // define
return calloc(1, sizeof(struct dnode));
}

您还会注意到,在上述两种情况下,我都在函数声明中使用了 void。这(无参数)和空参数列表(不确定数量的参数)之间存在细微差别。如果你真的想要一个无参数函数,你应该使用前者。

关于c - 警告 : initialization makes pointer from integer without a cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604530/

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