|
|
 |
Ответов
|
Oct 8 2008, 11:58
|

Группа: Новичок
Сообщений: 5
Регистрация: 15-06-08
Из: Кировская слобода
Пользователь №: 38 298

|
Цитата(Dog Pawlowa @ Oct 8 2008, 15:22)  Я сам создаю таблицу при количестве case'ов больше десятка. Все равно код становится длинным и нечитаемым. Каким образом вы создаете таблицу, можете поведать? Если он выполняется быстрее, то пускай он длинный и нечитаемый, для моего случая это не критично.
|
|
|
|
|
Oct 8 2008, 13:12
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(1eXX @ Oct 8 2008, 14:58)  Каким образом вы создаете таблицу, можете поведать? Если он выполняется быстрее, то пускай он длинный и нечитаемый, для моего случая это не критично. Примитивно //определения аргументов case, имен функций, и текста для вывода в одном месте Код ... #define stERROR 7 #define nm7 "Error" #define F7 fError #define stLOW_POWER 8 #define nm8e "Low power" #define nm8g "Unterspannung" #define F8 fLowPower ... // массив функций const VECTORS function[stQty] = Код { f0, f1, f2, f3, f4, f5, f6, f7, f8, f9...f103 }; //собственно "switch" в теле программы Код function[state]();
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Oct 9 2008, 00:29
|

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

|
Цитата(Dog Pawlowa @ Oct 8 2008, 16:12)  Код ... #define stERROR 7 #define stLOW_POWER 8 Для упрощения вставки/удаления элементов и исключения дублирования лучше использовать enum: Код enum state_t { stINIT = 0, .... stERROR, stLOW_POWER, };
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 9 2008, 05:23
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Сергей Борщ @ Oct 9 2008, 03:29)  Для упрощения вставки/удаления элементов и исключения дублирования лучше использовать enum. Хороший вопрос, необходимость корректировок иногда возникает. Делаю дыры или их забиваю. Конечно, я думал об этом, но к номеру состояния у меня привязаны еще массивы - как минимум массив функций обработки состояния. То есть все равно при исключении элемента из enum, нужно по имени найти и исключить подобный элемент из другого массива, строго соблюдая порядок. А их сотня. То есть рядом в тексте не расположить. А здесь я на видимом участке текста вижу все. Может, как-то макросами можно извратиться - не придумал. Если подскажете удобный способ, с меня
--------------------
Уходя, оставьте свет...
|
|
|
|
Сообщений в этой теме
1eXX Оптимизация switch? Oct 7 2008, 18:39 plombir Попробуйте таблицей (массивом во flash) указателей... Oct 8 2008, 04:09 Rst7 Чето вопрос не совсем ясен. IAR при больших свичах... Oct 8 2008, 05:23 MrYuran Цитата(1eXX @ Oct 7 2008, 22:39) "__... Oct 8 2008, 05:27 1eXX Цитата(plombir @ Oct 8 2008, 08:09) А вот... Oct 8 2008, 07:52 IgorKossak Цитата(1eXX @ Oct 8 2008, 10:52) ...а у м... Oct 8 2008, 08:06 Dog Pawlowa Цитата(1eXX @ Oct 8 2008, 10:52) А какая ... Oct 8 2008, 11:22 prottoss Цитата(1eXX @ Oct 8 2008, 15:52) а у меня... Oct 8 2008, 12:23 MrYuran По-моему, switch-case в любом случае преобразуется... Oct 8 2008, 08:04 1eXX Похоже одновременно изящного и эффективного решени... Oct 8 2008, 09:49 prottoss Цитата(1eXX @ Oct 8 2008, 17:49) Похоже о... Oct 8 2008, 10:51    Сергей Борщ Цитата(Dog Pawlowa @ Oct 9 2008, 08:23) Т... Oct 9 2008, 07:01     Dog Pawlowa Цитата(Сергей Борщ @ Oct 9 2008, 10:01) П... Oct 9 2008, 08:24  shasik Цитата(Dog Pawlowa @ Oct 8 2008, 16:12) К... Oct 10 2008, 18:09 1eXX Самое яблочко, Дог :beer: Oct 8 2008, 17:42 Dog Pawlowa Цитата(1eXX @ Oct 8 2008, 20:42) Самое яб... Oct 8 2008, 18:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|