我会简单地说:
这是我构建的函数,它将创建一个新的dnode:
struct dnode *dnode_create() {
return calloc(1, sizeof(struct dnode));
}
Run Code Online (Sandbox Code Playgroud)
以下是我称之为:
struct dnode *newnode = dnode_create();
Run Code Online (Sandbox Code Playgroud)
我不明白这涉及到整数?
pax*_*blo 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
}
Run Code Online (Sandbox Code Playgroud)
要么:
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));
}
Run Code Online (Sandbox Code Playgroud)
您还会注意到我void
在上面两种情况下都在函数声明中使用过.它(无参数)和空参数列表(参数数量不确定)之间存在细微差别.如果你真的想要一个无参数函数,你应该使用前者.