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

 
 
> Указатель на функцию
Danis
сообщение May 30 2011, 06:35
Сообщение #1


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



При переносе кода виртуального порта (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)


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение May 30 2011, 06:40
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Danis @ May 30 2011, 09:35) *
как ”оно”(CopyRoutine) называется?

Оно называется указателем на функцию, плучающую uint16_t и возвращающую указатель на uint8_t.

PS
Вынес из темы об STM32.
Danis, уж не для того ли Вы создавали тему в шапке раздела ARM, чтобы валить туда всё подряд? (можно не отвечать)
Go to the top of the page
 
+Quote Post
Danis
сообщение May 30 2011, 07:41
Сообщение #3


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(IgorKossak @ May 30 2011, 09:40) *
Оно называется указателем на функцию, плучающую uint16_t и возвращающую указатель на uint8_t.

Точно, точно. По детски лопухнулся, спасибо!
С замечанием согласен.



--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 30 2011, 07:53
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



чтобы не морочить голову я использую typedef, чего и Вам желаю.
Код
typedef uint8_t* (*copy_func_t)(uint16_t); // объявление типа указатель на функцию
...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 23:51
Рейтинг@Mail.ru


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