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

 
 
> Инкрементирующийся define, c помощью препроцессор Си
Alt.F4
сообщение Jul 10 2016, 06:40
Сообщение #1


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

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Здравствуйте.

Написан конечный автомат на конструкции switch - case. Для перехода к последующему действию просто инкрементируется указатель:
Код
switch(i)
{
case 0: ... i++;
case 1: ... i++;
...
case N: ... i++;
}

Действий порядка 100 и возникла проблема с добавлением новых case-обработчиков в середину конструкции, т.к. приходится увеличивать все последующие номера case.

Хочется перенести эту задачу на плечи препроцессора и оформить конструкцию таким образом, чтобы название макроопределения case было у всех одинаковым и, в тоже время, каждое последующее значение было на 1 больше предыдущего:
Код
switch(i)
{
case INCNAME: ... i++;
case INCNAME: ... i++;
...
case INCNAME: ... i++;
}

Подскажите, пожалуйста, возможно ли это как-то реализовать?
Спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alt.F4   Инкрементирующийся define   Jul 10 2016, 06:40
- - adnega   Так получится? Кодint j = 0; if(0){} else...   Jul 10 2016, 06:49
- - Сергей Борщ   "В лоб" задача решается применением enum...   Jul 10 2016, 07:27
- - jcxz   Цитата(Alt.F4 @ Jul 10 2016, 12:40) Дейст...   Jul 10 2016, 07:30
|- - adnega   Цитата(jcxz @ Jul 10 2016, 10:30) Не комп...   Jul 10 2016, 07:47
- - AlexandrY   Цитата(Alt.F4 @ Jul 10 2016, 09:40) Подск...   Jul 10 2016, 08:19
- - Владивольт   Подход с enum, несомненно, правилен. Однако, при д...   Jul 10 2016, 08:38
- - x893   Есть такая реализация, сделана на swich/case и __L...   Jul 10 2016, 09:03
- - zltigo   QUOTE (Alt.F4 @ Jul 10 2016, 09:40) Дейст...   Jul 10 2016, 09:49
|- - AlexandrY   Цитата(zltigo @ Jul 10 2016, 12:49) Что г...   Jul 10 2016, 09:54
||- - zltigo   Цитата(AlexandrY @ Jul 10 2016, 12:54) Да...   Jul 10 2016, 10:26
|||- - AlexandrY   Цитата(zltigo @ Jul 10 2016, 13:26) Не пу...   Jul 10 2016, 11:49
|||- - zltigo   QUOTE (AlexandrY @ Jul 10 2016, 14:49) Пр...   Jul 11 2016, 08:13
||- - Сергей Борщ   QUOTE (AlexandrY @ Jul 10 2016, 12:54) То...   Jul 10 2016, 11:55
||- - AlexandrY   Цитата(Сергей Борщ @ Jul 10 2016, 14:55) ...   Jul 10 2016, 12:02
||- - Сергей Борщ   QUOTE (AlexandrY @ Jul 10 2016, 15:02) Тр...   Jul 10 2016, 12:40
||- - AlexandrY   Цитата(Сергей Борщ @ Jul 10 2016, 15:40) ...   Jul 10 2016, 13:56
|- - jcxz   Цитата(zltigo @ Jul 10 2016, 15:49) Что г...   Jul 10 2016, 19:12
|- - AlexandrY   Цитата(jcxz @ Jul 10 2016, 22:12) Я так и...   Jul 10 2016, 20:00
||- - jcxz   Цитата(AlexandrY @ Jul 11 2016, 02:00) Гд...   Jul 10 2016, 20:36
||- - AlexandrY   Цитата(jcxz @ Jul 10 2016, 23:36) А зачем...   Jul 11 2016, 07:01
||- - jcxz   Цитата(AlexandrY @ Jul 11 2016, 13:01) Хо...   Jul 11 2016, 08:14
|- - zltigo   QUOTE (jcxz @ Jul 10 2016, 22:12) Можно с...   Jul 11 2016, 08:22
|- - jcxz   Цитата(zltigo @ Jul 11 2016, 14:22) Умень...   Jul 11 2016, 08:34
|- - zltigo   Цитата(jcxz @ Jul 11 2016, 11:34) Но быва...   Jul 11 2016, 09:55
|- - AlexandrY   Цитата(zltigo @ Jul 11 2016, 12:55) Это п...   Jul 11 2016, 11:11
|- - zltigo   QUOTE (AlexandrY @ Jul 11 2016, 14:11) Вы...   Jul 11 2016, 11:43
- - x893   Зря не смотрели в сторону http://dunkels.com/adam/...   Jul 10 2016, 20:33
|- - AlexandrY   Цитата(x893 @ Jul 10 2016, 23:33) Зря не ...   Jul 11 2016, 08:48
- - x893   Protothread это скрытый switch без enum и прочей е...   Jul 11 2016, 09:09
|- - AlexandrY   Цитата(x893 @ Jul 11 2016, 12:09) Смысл п...   Jul 11 2016, 09:24
- - Kabdim   Не могли бы Вы, zltigo, уточнить в каком именно пр...   Jul 11 2016, 12:10
|- - AlexandrY   Цитата(Kabdim @ Jul 11 2016, 15:10) Не мо...   Jul 11 2016, 13:07
|- - zltigo   Цитата(Kabdim @ Jul 11 2016, 15:10) Не мо...   Jul 11 2016, 13:24
- - k155la3   Задавал я аналогичный вопрос тут но реализация чер...   Jul 11 2016, 13:40
- - MrYuran   А я таки не понял, чем enum плох? Мало того, что в...   Jul 12 2016, 07:06
|- - AlexandrY   Цитата(MrYuran @ Jul 12 2016, 10:06) А я ...   Jul 12 2016, 08:26
|- - zltigo   QUOTE (AlexandrY @ Jul 12 2016, 11:26) Эт...   Jul 12 2016, 09:47
|- - Dog Pawlowa   Вообще то сам по себе инкремент состояния - это по...   Jul 12 2016, 14:57
- - yanvasiij   Я бы так делать не стал, но все же... CODEswitch ...   Jul 13 2016, 05:15
|- - k155la3   Если надо что-то "проинкриментировать" -...   Jul 13 2016, 06:36
- - yanvasiij   k155la3 Ну успел отписаться до того, как Вы все ...   Jul 13 2016, 07:01
- - Andrew_Q   Я использую таблицу состояний автомата именно в ви...   Jul 14 2016, 05:55
|- - adnega   Цитата(Andrew_Q @ Jul 14 2016, 08:55) Я и...   Jul 14 2016, 07:53
||- - Andrew_Q   Цитата(adnega @ Jul 14 2016, 12:53) А кто...   Jul 14 2016, 09:04
||- - k155la3   Цитата(adnega @ Jul 14 2016, 10:53) А кто...   Jul 14 2016, 09:23
|- - Владивольт   Цитата(Andrew_Q @ Jul 14 2016, 09:55) сос...   Jul 14 2016, 09:14
|- - Andrew_Q   Цитата(Владивольт @ Jul 14 2016, 14:14) К...   Jul 14 2016, 09:29
|- - demiurg_spb   Цитата(Andrew_Q @ Jul 14 2016, 12:29) __f...   Jul 14 2016, 09:45
||- - Andrew_Q   Опечатка? Я хронический лентяй, программа работает...   Jul 14 2016, 09:50
|- - jcxz   Цитата(Andrew_Q @ Jul 14 2016, 15:29) По ...   Jul 15 2016, 03:26
|- - Dog Pawlowa   Цитата(jcxz @ Jul 15 2016, 06:26) А как б...   Jul 15 2016, 03:47
|- - jcxz   Цитата(Dog Pawlowa @ Jul 15 2016, 09:47) ...   Jul 15 2016, 05:11
|- - Dog Pawlowa   Цитата(jcxz @ Jul 15 2016, 08:11) Объедин...   Jul 15 2016, 06:02
|- - zltigo   QUOTE (Dog Pawlowa @ Jul 15 2016, 09:02) ...   Jul 15 2016, 07:00
||- - Dog Pawlowa   Цитата(zltigo @ Jul 15 2016, 10:00) е и т...   Jul 15 2016, 07:32
||- - zltigo   QUOTE (Dog Pawlowa @ Jul 15 2016, 10:32) ...   Jul 15 2016, 08:27
|- - jcxz   Цитата(Dog Pawlowa @ Jul 15 2016, 12:02) ...   Jul 15 2016, 08:20
- - brag   Тоже согласен, что если состояний больше десятка(а...   Sep 7 2016, 23:12


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

 


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


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