Как инициализировать массив указателей на функции?
У меня есть следующий код:
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
Как инициализировать этот массив указателей на функции?
1 ответ
Решение
Вы должны либо сделать это внутри функции, где Functions[0] = f;
работает нормально, или с инициализатором массива:
t_Function Functions[MAX_FUNCTIONS] = {f};
Чтобы это работало, f
(и все функции, которые вы хотите в Functions
) должно быть объявлено в том месте, где появляется это определение. Обратите внимание, что все остальные MAX_FUNCTIONS-1
элементы Functions
будет NULL
автоматически, если хотя бы один из них заполнен таким образом.