Массив объявления функций и задачи присваивания - PullRequest
2 голосов
/ 08 июня 2011

Я пытаюсь создать массив указателей на функции и пытаюсь присвоить ему адрес функции. Но я получаю ошибки, с которыми я не знаю, как поступить.

Мой код

void (*Event_Handlers)[3]();  //Line no 10

/* Queue, Drop and Send_back have been defined. for eg */
void Queue()
{
....
}

Event_Handlers[0]=Queue;  // Line 35
Event_Handlers[1]=Drop;   // Line 36
Event_Handlers[2]=Send_Back;   // Line 37

Но я получаю следующую ошибку

 fsm.c:10: error: declaration of âEvent_Handlersâ as array of functions

 fsm.c:35: warning: data definition has no type or storage class

 fsm.c:35: error: invalid initializer

 fsm.c:36: warning: data definition has no type or storage class

 fsm.c:36: error: invalid initializer

 fsm.c:37: warning: data definition has no type or storage class

 fsm.c:37: error: invalid initializer

Где я иду не так

Ответы [ 3 ]

8 голосов
/ 08 июня 2011

Вы очень близки ...

Попытка:

void (*Event_Handlers[3])(); 
3 голосов
/ 08 июня 2011

Чтобы быть уверенным, что вы объявили массив указателей на функцию в первый раз, используйте следующий синтаксис:

typedef void (*func_t)();
func_t EventHandlers[3];
0 голосов
/ 06 августа 2017

тип элемента массива может быть указателем на функцию, но не может быть функцией.

void (* Event_Handlers [3]) ()

будет правильным ответом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...