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

 
 
> Функция, которая возвращает указатель на саму себя, как описАть?
Александр Куличо...
сообщение Apr 10 2007, 12:25
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Как в С описать функцию, которая возвращает указатель на функцию, себе подобную (на саму себя)?

В Делфи, например, можно сначала описАть указатель на тип, а потом описать уже сам тип:
type
PFunc = ^TFunc;
TFunc = function(X: Integer): PFunc;

Позволяет ли подобное С и как это реализуется?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
YemZ
сообщение Apr 10 2007, 15:29
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 38
Регистрация: 12-07-06
Из: Киев
Пользователь №: 18 772



typedef void* (*funcPtrType)(char);

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

Возвраты из функций обработки должны выглядеть так
return (funcPtrType)&Rx1Func;

Выделенная строка тоже обзаведется приведением типа
funcPtr = (funcPtrType)((*funcPtr)(RxByte));


Кстати такие варианты тоже верны:
return (funcPtrType)Rx1Func;
funcPtr = (funcPtrType)(funcPtr(RxByte));
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Apr 10 2007, 15:57
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата(YemZ @ Apr 10 2007, 15:29) *
typedef void* (*funcPtrType)(char);

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

Возвраты из функций обработки должны выглядеть так
return (funcPtrType)&Rx1Func;

Выделенная строка тоже обзаведется приведением типа
funcPtr = (funcPtrType)((*funcPtr)(RxByte));
Кстати такие варианты тоже верны:
return (funcPtrType)Rx1Func;
funcPtr = (funcPtrType)(funcPtr(RxByte));


БОЛЬШОЕ СПАСИБО. Это то, что мне надо. Еще хотелось бы узнать - цепочки данных (деревья) в С реализуются точно так же? (Там аналогичная задача при описании структуры - она должна содержать ссылку на саму себя)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2007, 16:18
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Александр Куличок @ Apr 10 2007, 14:57) *
Еще хотелось бы узнать - цепочки данных (деревья) в С реализуются точно так же?
Кажется вопрос деревьев (связанных списков) рассматривается в любой книжке по C smile.gif
Код
struct my_struct
{
   my_struct *prev;
   my_struct *next;
  ........
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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