c语言中的空洞函数

c语言中的空洞函数,c,C,当函数由struct中定义的类型定义时,它的实际含义是什么。为了更好地理解我,这里有一个例子: typedef struct node { int number; struct node *left, *right; } Node; typedef Node *tree; tree makenew (void) { return NULL; } tree定义的函数(makenew)与使用int或void定义的函数有什么不同,这是否意味着该函数必须返回一个tree值?@EdHeal:如果

当函数由struct中定义的类型定义时,它的实际含义是什么。为了更好地理解我,这里有一个例子:

typedef struct node { 
int number;
struct node *left, *right; 
} Node;

typedef Node *tree;

tree makenew (void) { return NULL; }

tree定义的函数(makenew)与使用int或void定义的函数有什么不同,这是否意味着该函数必须返回一个tree值?

@EdHeal:如果您建议
tree makenew()
,这是一个非原型声明;这是一个过时的特性,保留它是为了与ANSIC之前的版本兼容,并且它不允许编译器检查调用程序是否正确地传递任何参数<代码>树makenew(void)是首选。(也许你在想C++,它有不同的规则。)伙计们,这里的意思是什么?(Keththppson)——只是一个不再需要的评论。但是你可以把它塞进去。这就是为什么我把它作为注释放在函数声明或定义中,
(void)
意味着函数不带参数
()
将更加一致,但这在非常旧的C版本中已经有了意义,因此
(void)
语法被发明出来。)@EdHeal:你的评论似乎鼓励使用
()
而不是
(void)
;那是个坏主意。
int foo(void) { return 1; } // returns an int

void foo(void) { return; } // returns nothing

tree foo(void) { return NULL; } // returns a "Node *" which is typedef'ed to tree
                                // the value of the pointer is NULL