我有以下代码:
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
如何初始化这个函数指针数组?
答案 0 :(得分:3)
您应该在函数内部执行此操作,Functions[0] = f;
可以正常工作,或者使用数组初始值设定项:
t_Function Functions[MAX_FUNCTIONS] = {f};
要使其正常工作,f
(以及Functions
中所需的所有函数)必须在此定义出现的位置声明。请注意,MAX_FUNCTIONS-1
的所有其他Functions
元素将自动NULL
,如果其中至少有一个以这种方式填充。