|
Инкрементирующийся define, c помощью препроцессор Си |
|
|
|
Jul 10 2016, 06:40
|
Профессионал
    
Группа: Свой
Сообщений: 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++; } Подскажите, пожалуйста, возможно ли это как-то реализовать? Спасибо.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|