如何初始化函数指针数组?

时间:2011-03-04 09:54:24

标签: c arrays function pointers function-pointers

我有以下代码:

typedef int (*t_Function) (int x);
t_Function Functions[MAX_FUNCTIONS];
int f(int x)
{
    return 0;
}

但我无法正确初始化它。如果我添加以下行:

Functions[0] = f;

然后编译器生成以下错误:

prog.c:217: warning: data definition has no type or storage class
prog.c:217: error: conflicting types for Functions

如何初始化这个函数指针数组?

1 个答案:

答案 0 :(得分:3)

您应该在函数内部执行此操作,Functions[0] = f;可以正常工作,或者使用数组初始值设定项:

t_Function Functions[MAX_FUNCTIONS] = {f};

要使其正常工作,f(以及Functions中所需的所有函数)必须在此定义出现的位置声明。请注意,MAX_FUNCTIONS-1的所有其他Functions元素将自动NULL,如果其中至少有一个以这种方式填充。