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

 
 
> Два входа в одну функцию на C, возможно ли такое?
ViKo
сообщение Dec 2 2010, 11:28
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



На ассемблере у меня были подпрограммы, в которых сначала идет управление, а потом индикация. И можно было при желании вызвать только индикацию, и вернуться обычным возвратом в конце подпрограммы. Можно ли так сделать на C? Иметь в середине функции метку, и вызвать функцию по указателю на эту метку?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Dec 2 2010, 14:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Ну можно еще более универсальную штуку сочинить, типа:

Код
typedef void (*pVoidFun)(void);          

void Control_Indication(pVoidFun p)
{
   if(p)
      p();
  
   Indication();
}


Тогда можно вызывать Control_Indication(NULL) - будет вызываться только Indication(), а при вызове типа Control_Indication(Control) сначала вызовется функция, адрес которой вы передали вызывающей функции, затем Indication().
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 2 2010, 14:18
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(sergeeff @ Dec 2 2010, 16:12) *
...а при вызове типа Control_Indication(Control) сначала вызовется функция, адрес которой вы передали вызывающей функции...

Только Control() при этом должна быть отдельной функцией, иначе указатель на нее не создать. sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Два входа в одну функцию на C   Dec 2 2010, 11:28
- - MALLOY2   Кодvoid Indication(void) { ... } void ...   Dec 2 2010, 11:43
|- - ViKo   Цитата(MALLOY2 @ Dec 2 2010, 13:43) The B...   Dec 2 2010, 11:47
|- - _Pasha   Цитата(MALLOY2 @ Dec 2 2010, 14:43) Без к...   Dec 2 2010, 15:46
|- - _Pasha   Цитата(MALLOY2 @ Dec 2 2010, 14:43) Без к...   Dec 2 2010, 15:46
||- - sergeeff   Цитата(_Pasha @ Dec 2 2010, 19:46) Почему...   Dec 2 2010, 16:16
||- - ViKo   Цитата(_Pasha @ Dec 2 2010, 17:46) ТХЕ БЕ...   Dec 2 2010, 18:17
||- - Dog Pawlowa   Цитата(ViKo @ Dec 2 2010, 21:17) Или в де...   Dec 2 2010, 19:07
||- - _Pasha   Цитата(ViKo @ Dec 2 2010, 21:17) Прокомме...   Dec 3 2010, 08:29
||- - ViKo   Цитата(_Pasha @ Dec 3 2010, 10:29) Теперь...   Dec 3 2010, 09:32
||- - _Pasha   Цитата(ViKo @ Dec 3 2010, 12:32) Пока что...   Dec 3 2010, 09:37
|- - XVR   Цитата(MALLOY2 @ Dec 2 2010, 14:43) Кодvo...   Dec 3 2010, 07:03
|- - Tanya   Цитата(XVR @ Dec 3 2010, 10:03) PS. Пишит...   Dec 3 2010, 07:26
- - MrYuran   Цитата(ViKo @ Dec 2 2010, 14:28) Можно ли...   Dec 2 2010, 11:47
- - MALLOY2   ЦитатаИмеется некоторая избыточность в виде лишнег...   Dec 2 2010, 11:57
|- - ViKo   Цитата(MALLOY2 @ Dec 2 2010, 13:57) я не ...   Dec 2 2010, 12:15
|- - MrYuran   Цитата(MALLOY2 @ Dec 2 2010, 14:57) В сам...   Dec 2 2010, 12:15
- - vvs157   Цитата(ViKo @ Dec 2 2010, 14:28) Иметь в ...   Dec 2 2010, 12:34
- - kosyak©   2MrYuran А чем компилятору могут не понравиться ск...   Dec 2 2010, 12:34
|- - MrYuran   Цитата(kosyak© @ Dec 2 2010, 15:34) А чем...   Dec 2 2010, 12:55
- - MALLOY2   ЦитатаНо только не так, как у вас! Что, по-ваш...   Dec 2 2010, 12:38
- - ViKo   Есть вариант без switch Кодvoid Control_Indication...   Dec 2 2010, 13:07
- - kosyak©   Цитата(MrYuran @ Dec 2 2010, 15:55) Есть ...   Dec 2 2010, 13:16
|- - MrYuran   Цитата(kosyak© @ Dec 2 2010, 16:16) При d...   Dec 2 2010, 13:27
- - MALLOY2   Так и есть это и есть всякие баги с макросами , ...   Dec 2 2010, 13:31
- - kosyak©   Занятная статья. do{}while(0) я видел в чужих ис...   Dec 2 2010, 13:39
|- - ViKo   Цитата(kosyak© @ Dec 2 2010, 15:39) Сам я...   Dec 2 2010, 14:05
|- - zltigo   QUOTE (kosyak© @ Dec 2 2010, 16:39) Занят...   Dec 2 2010, 16:59
- - sergeeff   Вы боретесь за экономию одной команды вызова и одн...   Dec 2 2010, 15:21
|- - ViKo   Цитата(sergeeff @ Dec 2 2010, 17:21) Вы б...   Dec 2 2010, 15:50
- - kosyak©   2zltigo: Хм...логично. Тогда напрашивается вопрос ...   Dec 2 2010, 18:09
|- - zltigo   QUOTE (kosyak© @ Dec 2 2010, 21:09) Хм......   Dec 2 2010, 22:44
|- - ViKo   Цитата(kosyak© @ Dec 2 2010, 20:09) Хм......   Dec 3 2010, 09:41
|- - Сергей Борщ   QUOTE (ViKo @ Dec 3 2010, 11:41) Например...   Dec 3 2010, 12:53
|- - ViKo   Цитата(Сергей Борщ @ Dec 3 2010, 14:53) П...   Dec 3 2010, 14:58
|- - _Pasha   Цитата(ViKo @ Dec 3 2010, 18:58) Об этом ...   Dec 3 2010, 15:07
|- - ViKo   Цитата(_Pasha @ Dec 3 2010, 17:07) Перекл...   Dec 3 2010, 15:20
|- - MrYuran   Цитата(ViKo @ Dec 3 2010, 18:20) Да, вы п...   Dec 3 2010, 15:47
|- - _Pasha   Цитата(MrYuran @ Dec 3 2010, 18:47) то ко...   Dec 3 2010, 16:04
- - kosyak©   Понятн... Вот интересно - доживу я до момента когд...   Dec 3 2010, 05:51
- - _Pasha   Собсна делов-то: Код#define Begin___Macro do{ #def...   Dec 3 2010, 13:39
- - sigmaN   ЦитатаЕсли функции инлайновые, а параметр констант...   Dec 3 2010, 23:11
|- - _Pasha   Цитата(sigmaN @ Dec 4 2010, 02:11) конста...   Dec 4 2010, 06:19
|- - _Pasha   Цитата(sigmaN @ Dec 4 2010, 02:11) конста...   Dec 4 2010, 06:19
- - sergeeff   TO _Pasha : Сдается мне, что вы формулируете свои...   Dec 4 2010, 11:32
- - _Pasha   Цитата(sergeeff @ Dec 4 2010, 15:32) TO _...   Dec 4 2010, 13:13


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

 


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


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