2015-02-20 2 views
2

Я читаю код проекта, и я нашел часть, которую я не мог понять:Значение кода C фрагмент

void (*pEpInt_OUT[7])(void) = 
{ 
    EP1_OUT_Callback, 
    EP2_OUT_Callback, 
    EP3_OUT_Callback, 
    EP4_OUT_Callback, 
    EP5_OUT_Callback, 
    EP6_OUT_Callback, 
    EP7_OUT_Callback, 
}; 

Является ли это функция? Если да, как его зовут? Или что-то еще?

+1

Это массив указателей функций. Имя массива - 'pEpInt_OUT', оно состоит из 7 записей, и каждая запись содержит указатель на функцию, которая не принимает аргументов и не возвращает никакого значения. –

+1

Это похоже на то, что вы нашли код реального мира для старого quip: «C не так сложно: void (* (* f [])())() определяет f как массив неуказанного размера, указателей на функции которые возвращают указатели на функции, возвращающие пустоту ». –

+3

Еще один интересный вопрос: почему этот пост был проголосован 3 раза? Он правильно отформатирован, OP конкретно упоминает, что он или она не может понять данный фрагмент кода, и в нижней части сообщения показано дополнительное усилие. Как еще OP получит ответ на этот вопрос? Похоже, это не похоже на то, что будет работать. –

ответ

7

Это массив из 7 указателей функций. Каждая из записей указывает на функцию, которая принимает void и возвращает void; void EP1_OUT_Callback(void).

+1

... и эти функции - EP1_OUT_Callback и т. Д. –

4

Это объявление и инициализация массива указателей на функции, тогда как в коде должны быть объявлены функции void EPx_OUT_Callback(void); (x от 1 до 7).

Смежные вопросы