如何用户定义与 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};