Danis 0 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба При переносе кода виртуального порта (USB-COM) от ST, столкнулся с такой конструкцией: uint8_t *(*CopyRoutine)(uint16_t); Немного пришлось скорректировать код, поскольку у меня проект на С++, NULL заменил на 0. В принципе все работает. Но так толком и не смог назвать CopyRoutine, ну если бы не было левой звездочки, был бы указатель на функцию, а так пока не встречал в своей практике такую конструкцию. Вообщем как ”оно”(CopyRoutine) называется? Вырезка и листинга: RESULT Virtual_Com_Port_Data_Setup(uint8_t RequestNo) { uint8_t *(*CopyRoutine)(uint16_t); CopyRoutine = NULL; …….. NULL определен так: #define NULL ((void *)0) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба как ”оно”(CopyRoutine) называется? Оно называется указателем на функцию, плучающую uint16_t и возвращающую указатель на uint8_t. PS Вынес из темы об STM32. Danis, уж не для того ли Вы создавали тему в шапке раздела ARM, чтобы валить туда всё подряд? (можно не отвечать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба ну если бы не было левой звездочки, был бы указатель на функцию, а так пока не встречал в своей практике такую конструкцию. Левая звёздочка относится к типу возвращаемого значения. Получается указатель на функцию, возвращающую указатель на uint8_t. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба Оно называется указателем на функцию, плучающую uint16_t и возвращающую указатель на uint8_t. Точно, точно. По детски лопухнулся, спасибо! С замечанием согласен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба чтобы не морочить голову я использую typedef, чего и Вам желаю. typedef uint8_t* (*copy_func_t)(uint16_t); // объявление типа указатель на функцию ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Idle 0 31 мая, 2011 Опубликовано 31 мая, 2011 · Жалоба чтобы не морочить голову ни себе и ни людям, typedef не использую и тебе не советую http://lxr.linux.no/#linux+v2.6.39/Documen...odingStyle#L277 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 1 июня, 2011 Опубликовано 1 июня, 2011 · Жалоба Это очень индивидуально. И с данным утверждением (вернее с рекомендацией) можно как соглашаться так и нет. Лично мне гораздо удобнее и понятнее читать код где присутствует как можно меньше лишных буковок, typedef в этом плане абсолютно безопасен и стандартен. После продолжительного опыта программирования на объектных языках программирования проникаешься идеологией типов разных сущностный. И это очень хорошо на мой взгляд. Я действительно при программировании на С придерживаюсь linux-CodingStyle, но не слепо и огульно... Это сродни подмеченному нами в одном из обсуждений моменту - невозможно научиться грамотно писать на асме не поняв суть процедурного языка программирования. И тут я хочу провести красной нитью мысль о невозможности хорошо программировать на С не понимая принципов объектно-ориентированного программирования. И так фактически во всём. Сейчас много псевдо-программистов, которые окромя одной технологии или фреймворка ничего не видели и не знают. И мы с Вами наблюдаем огромное количество кода никакого качества, даже от именитых вендеров. К чему это я всё? Да к тому что нужно своей головой больше думать и не принимать за чистую монету всё то новое, что увидел, узнал или прочитал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 5 апреля, 2013 Опубликовано 5 апреля, 2013 · Жалоба Здравствуйте! Хочу оживить дискуссию. Подскажите как это в теории называется !!! typedef void QEMUResetHandler(void *opaque); void qemu_register_reset(QEMUResetHandler *func, void *opaque); void qemu_unregister_reset(QEMUResetHandler *func, void *opaque); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 5 апреля, 2013 Опубликовано 5 апреля, 2013 · Жалоба И мы с Вами наблюдаем огромное количество кода никакого качества, даже от именитых вендеров. К чему это я всё? Да к тому что нужно своей головой больше думать и не принимать за чистую монету всё то новое, что увидел, узнал или прочитал. :bb-offtopic: а с моими размышлениями как спорили... ужас! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 8 апреля, 2013 Опубликовано 8 апреля, 2013 · Жалоба Подскажите как это в теории называется !!! callback Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 апреля, 2013 Опубликовано 8 апреля, 2013 · Жалоба callbackИли по-русски обратный вызов. Типичное применение - это функция-обработчик некого события на которое нужно как-то реагировать (иногда по-разному). И, если этот обратный вызов зарегистрирован (указатель отличен от NULL), то он срабатывает иначе игнорируется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться