реклама на сайте
подробности

 
 
> помогите с контрукциями С, непонятно
Dubov
сообщение Jul 11 2012, 15:26
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Волей судьбы пришлось разбираться с чужим кодом.
Никак не пойму что означает такая конструкция:
CODE
typedef void ( * DSP_Proc ) ( win_inst * win, mod_msg * pMsg );


а потом вижу такое
CODE
DSP_Proc Сom_fProc[CMD_NUMBER];

где элементы массива - имена, ранее объявленых функций.

Зачем так сильно всё усложнать? где такие выкрутасы оправданы и полезны?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Jul 11 2012, 15:33
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Dubov @ Jul 11 2012, 18:26) *
Никак не пойму что означает такая конструкция:
Код
typedef void ( * DSP_Proc ) ( win_inst * win, mod_msg * pMsg );

Есть такая штука - указатель на функцию. DSP_Proc - имя типа указателя на фунцкию принимающую два параметра (win_inst * и mod_msg *) и не возвращающая ничего(void).


Цитата(Dubov @ Jul 11 2012, 18:26) *
Код
DSP_Proc Сom_fProc[CMD_NUMBER];

где элементы массива - имена, ранее объявленых функций.

Сom_fProc - массив указателей на функцию.


Цитата(Dubov @ Jul 11 2012, 18:26) *
Зачем так сильно всё усложнать? где такие выкрутасы оправданы и полезны?

Иногда такое нужно и удобно - во многих языках такое есть. Почитайте у того же K&R или ещё где.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 11:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016