2011-03-04 211 views
1

我有以下代码:如何初始化指向函数的指针数组?

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 

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

回答

3

你要么做一个函数,其中Functions[0] = f;工作正常,或与数组初始化中:

t_Function Functions[MAX_FUNCTIONS] = {f}; 

对于这项工作,f(你在Functions希望所有功能)必须声明在这个定义出现的地方。请注意,Functions的所有其他MAX_FUNCTIONS-1元素将自动为NULL,前提是其中至少有一个元素是以这种方式填充的。

+0

是的,我已经找到它了。我在一个函数中做。谢谢! – psihodelia 2011-03-04 10:06:30