2011-03-04 254 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