How to initialize array of pointers to functions?
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?
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.
精彩评论