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

 
 
> Два входа в одну функцию на 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
Ответов
kosyak©
сообщение Dec 2 2010, 18:09
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



2zltigo:
Хм...логично. Тогда напрашивается вопрос - и как жить? crying.gif
Не использовать препроцессор прошу не предлагать smile.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 3 2010, 09:41
Сообщение #3


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

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



Цитата(kosyak© @ Dec 2 2010, 20:09) *
Хм...логично. Тогда напрашивается вопрос - и как жить? crying.gif

Например, так, без точки с запятой после макрофункции, хватит и ПРОПИСНЫХ_БУКВ_СО_СКОБКАМИ()
Код
#define I2C_CLOCK() {NOP(); SCL = 1; NOP(); SCL = 0;}
if (...) I2C_CLOCK() else return;
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 3 2010, 12:53
Сообщение #4


Гуру
******

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



QUOTE (ViKo @ Dec 3 2010, 11:41) *
Например, так, без точки с запятой после макрофункции,
Потом почесали за ухом и решили, что в процессе кования программы макрос разросся и лучше сделать из него обычную функцию. И помчались вставлять точку с запятой везде, где было использование этого макроса. И все ради чего? Ради того, чтобы по религиозным соображениям не использовать конструкцию do {} while(0) ? Да пожалуйста.


--------------------
На любой вопрос даю любой ответ
"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
ViKo
сообщение Dec 3 2010, 14:58
Сообщение #5


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

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



Цитата(Сергей Борщ @ Dec 3 2010, 14:53) *
Потом почесали за ухом и решили, что в процессе кования программы макрос разросся и лучше сделать из него обычную функцию. И помчались вставлять точку с запятой везде, где было использование этого макроса.

Когда я захочу вместо макроса применить функцию, я даже имени такого не оставлю, а изменю, согласно своим "религиозным" убеждениям. Заменить не трудно, при желании, можно даже автоматом. Я стараюсь не плодить лишних сущностей.

Цитата(_Pasha @ Dec 3 2010, 15:39) *
можно вызывать такое отовсюду и отрубать не актуальные функции входным параметром - приоритетом.

Об этом написал MrYuran в посте №3
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 3 2010, 15:07
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(ViKo @ Dec 3 2010, 18:58) *
Об этом написал MrYuran в посте №3

Переключатель - это еще не все. Вопрос, где break ставить, и ставить ли вообще.
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, 14:12
|- - ViKo   Цитата(sergeeff @ Dec 2 2010, 16:12) ...а...   Dec 2 2010, 14:18
- - sergeeff   Вы боретесь за экономию одной команды вызова и одн...   Dec 2 2010, 15:21
|- - ViKo   Цитата(sergeeff @ Dec 2 2010, 17:21) Вы б...   Dec 2 2010, 15:50
|- - zltigo   QUOTE (kosyak© @ Dec 2 2010, 21:09) Хм......   Dec 2 2010, 22:44
|- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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