How to initialize array of pointers to functions?

2020-04-17 18:42发布

问题:

I have following code:

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

But I cannot initialize it properly. If I add following line:

Functions[0] = f;

then compiler generates following error:

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

How to initialize this array of pointers to functions?

回答1:

You should either do it inside a function, where Functions[0] = f; works fine, or with an array initializer:

t_Function Functions[MAX_FUNCTIONS] = {f};

For this to work, f (and all functions you want in Functions) must have been declared at the point where this definition appears. Note that all other MAX_FUNCTIONS-1 elements of Functions will be NULL automatically if at least one of them is filled this way.