例如:
#include <stdio.h>
typedef void (* proto_1)();
typedef void proto_2();
void my_function(int j){
printf("hello from function. I got %d.\n",j);
}
void call_arg_1(proto_1 arg){
arg(5);
}
void call_arg_2(proto_2 arg){
arg(5);
}
void main(){
call_arg_1(&my_function);
call_arg_1(my_function);
call_arg_2(&my_function);
call_arg_2(my_function);
}
运行这个我得到以下信息:
> tcc -run try.c
hello from function. I got 5.
hello from function. I got 5.
hello from function. I got 5.
hello from function. I got 5.
我的两个问题是:
- 定义的函数原型有什么区别
(* proto)
一个定义没有?
- 使用引用运算符调用函数有什么区别(
&
)和没有?
没有区别。证据请参见C99规格 http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf(第 6.7.5.3.8 节)。
“将参数声明为“函数返回类型”应调整为“指向的指针”
函数返回类型’’,如 6.3.2.1 中所示。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)