开发者

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.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜