我将保持简单:
这是我构建的函数,它将创建一个新的 dnode:
struct dnode *dnode_create() {
return calloc(1, sizeof(struct dnode));
}
这就是我所说的:
struct dnode *newnode = dnode_create();
我不明白这与整数有何关系?
当您尝试使用它时,要么calloc
或dnode_create
没有原型。
这意味着它假定int
返回类型,因此您的警告消息。
为确保原型可见calloc
,请包含stdlib.h
头文件。
如果是dnode_create
,您必须自己做,方法是:
对此进行扩展,假设它们在单个翻译单元(简单地说,源文件)中以这种方式排序,这两种方法都将起作用。第一的:
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
在上述两种情况下都使用了函数声明。这(无参数)和空参数列表(不确定数量的参数)之间存在细微差别。如果你真的想要一个无参数的函数,你应该使用前者。