Да, каждый при своём мнении… Я считаю, всё что улучшает наглядность - допустимо! И не только допустимо, но и приветствуется.
Согласен.
Но макрос, содержащий непарные фигурные скобки, то есть меняющий блоки кода. НЕ УЛУЧШАЕТ наглядность. Я тебе это говорю с момента знакомства на форуме, а ты их все равно юзаешь! ;)))) Охххх…
Ну так Петрович не даст соврать: как известно, brainfuck - самый наглядный язык в мире!
исходя из наглядности свитч-кейс лучше
Я бы сказал, для всех привычнее.
Привычнее для всех - да. Но. Я маскирую все детали. Мне не нужно придумывать названия кейсам. При каждом проходе выполняется только один шаг. Макро, как и функции пишешь один раз. И названия говорят сами за себя
а если необходимо не на след шаг перейти, а например в третий сначала списка?
Тогда обычный свич/кейс.
Я забыла спросить, bool занимает 1 байт
enum {
KEY_ON,
KEY_OFF,
} activation_stage;
А такая конструкция сколько занимает?
такая - 4 байта, а вот так
enum activation_stage : uint8_t{
KEY_ON,
KEY_OFF,
};
2 байта
Но это флеш память?
С чего вдруг?
Ой,да, это же не PROGMEM
Спасибо.
enum {
SEARCH,
WAITING,
NET_FOUND,
NET_NOT_FOUND,
} modem_setup_step;
switch (modem_setup_step) {
case SEARCH:
modem_setup_step = WAITING;
break;
case WAITING:
modem_setup_step = SEARCH;
break;
}
Тогда и в switch выгоднее использовать одну переменную типа uint8_t, тогда будет 1 байт.
Или?
case 0://+1 байт
case 1://+1 байт
По умолчанию размер элементов enum - int, т.е. 2 байта. Числовая константа по умолчанию - тоже int, т.е. 2 байта. Поэтому для перечислений (если памяти жалко) лучше задавать размер явно. И не использовать числовые константы в switch
То есть case 0: это 2 байта? int
Так и есть
Спасибо.
Я почему то думал, что если не создавать
и не обьявлять объект нумерации, то ничего такая конструкция занимать не должна.
Типа вот так :
0 байт и конструкция эквивалентна define`у
enum {OFF=0,ON};
А вот так 2 байта
enum ENUM{OFF=0,ON}myEnum;
myEnum=OFF;
А вот так точно 1 байт будет
enum class TSwitchState : bool { Off = false, On = true };
TSwitchState SwitchState = TSwitchState::Off;
bool можно заменить на uint8_t, тоже 1 байт займёт