我会保持简单:
这是我构建的函数,它将创建一个新的dnode:
struct dnode *dnode_create() {
return calloc(1, sizeof(struct dnode));
}
以下是我的称呼方式:
struct dnode *newnode = dnode_create();
我不明白这与整数有什么关系?
答案 0 :(得分:11)
尝试使用时,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
。它(无参数)和空参数列表(参数数量不确定)之间存在细微差别。如果你真的想要一个无参数函数,你应该使用前者。