开发者

How to initialize array of pointers to functions?

开发者 https://www.devze.com 2023-02-14 23:23 出处:网络
I have following code: typedef int (*t_Function) (int x); t_Function Functions[MAX_FUNCTIONS]; int f(int x)

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消