如何用户定义与 main 函数具有相同原型的函数指针数组?
How to user define array of function pointers which have same prototype as main function?
我对可以指向主函数的 typedef 函数指针进行了赋值。我尝试过类似的方法,但我不确定它是否可行。
typedef mainPtr(*f[])(int, char**);
困扰我的是数组大小没有定义。你会怎么做?
main
的类型(你想要的形式)是int main(int, char **)
。
指向它的指针是 int (*main)(int, char **)
。
这些数组是 int (*main[])(int, char **)
。
它的一个 typedef 是 typedef int (*mainPtr[])(int, char **);
。
是否需要数组的大小取决于您将如何使用该类型。如果你定义并初始化一个这种类型的对象,它的数组大小将通过计算初始化器来完成。例如:
mainPtr p = { main, NULL };
将创建一个包含两个元素的数组。
在其他用途中,例如声明具有此类型的函数参数,您可能不需要完整的数组。数组函数参数会自动调整为指针,因此大小无论如何都会被丢弃。但是,如果您愿意,可以在 typedef
.
中包含尺寸
如果您对函数本身进行 typedef,语法会更简单:
typedef int mainfunc(int, char **);
然后你可以使用“正常”指针语法:
/* definition of the function pointer*/
mainfunc *mainptr;
/* definitions of the function pointer arrays*/
mainfunc *mainptrarray[5];
mainfunc *mainptrarray1[] = {foo, bar, NULL};
我对可以指向主函数的 typedef 函数指针进行了赋值。我尝试过类似的方法,但我不确定它是否可行。
typedef mainPtr(*f[])(int, char**);
困扰我的是数组大小没有定义。你会怎么做?
main
的类型(你想要的形式)是int main(int, char **)
。
指向它的指针是 int (*main)(int, char **)
。
这些数组是 int (*main[])(int, char **)
。
它的一个 typedef 是 typedef int (*mainPtr[])(int, char **);
。
是否需要数组的大小取决于您将如何使用该类型。如果你定义并初始化一个这种类型的对象,它的数组大小将通过计算初始化器来完成。例如:
mainPtr p = { main, NULL };
将创建一个包含两个元素的数组。
在其他用途中,例如声明具有此类型的函数参数,您可能不需要完整的数组。数组函数参数会自动调整为指针,因此大小无论如何都会被丢弃。但是,如果您愿意,可以在 typedef
.
如果您对函数本身进行 typedef,语法会更简单:
typedef int mainfunc(int, char **);
然后你可以使用“正常”指针语法:
/* definition of the function pointer*/
mainfunc *mainptr;
/* definitions of the function pointer arrays*/
mainfunc *mainptrarray[5];
mainfunc *mainptrarray1[] = {foo, bar, NULL};