-
- Действительно открыл! :) Кстати, в GCC - аналогично. Даже опция есть, что-то вроде short-enums - КСПшник(22.11.2011 15:36)
- дык открытие в том что часть enum`ов может быть 16-битных, а часть 8-битные =) - MegaJohn(22.11.2011 15:53)
- Это как? Имеются ввиду разные enumы в одной программе или разные члены одного enumа? При наличии ключа -short-enums размер каждого enuma определяется значением его максимального члена. - Сергей Борщ(22.11.2011 16:41)
- вчера эксперементировал типа: enum { lla, llb, llc } lllx = lla; прибавляло один байт, а enum { lla, llb, llc == (1 << 8) } lllx = lla; прибавляло 2 - MegaJohn(22.11.2011 16:46)
- Странно llc == (1 - IdleMode(24.11.2011 10:01, )
- Странно, llc == (1 - IdleMode(24.11.2011 10:03, )
- Странно, llc == (1 ROL 8) это же сравнение, должно быть булево 0 или 1.Что такое не пропускает угловые скобочки. - IdleMode(24.11.2011 10:10, )
- Странно, llc == (1 - IdleMode(24.11.2011 10:03, )
- логично - Сергей Борщ(22.11.2011 17:18)
- логично если был бы фиксированный размер и во втором случае приведение к u8. Кста, llc == (1 << 16) уже не канает - MegaJohn(22.11.2011 17:27)
- Каким образом не канает? Пишет "integer overflow" или что-то подобное? Так тут enum не виноват - попробуйте (1UL<<16), обдумайте. - Сергей Борщ(22.11.2011 18:13)
- А где сказано, что enum обязан уметь long, long long, и др. ? Эдак и float можно захотеть. - fk0(22.11.2011 18:35)
- В стандарте, вестимо. Сергей Борщ(700 знак., 23.11.2011 11:37)
- Хотя да, вы правы. 6.4.4.3.2 An identifier declared as an enumeration constant has type int. - Сергей Борщ(23.11.2011 11:42)
- В стандарте, вестимо. Сергей Борщ(700 знак., 23.11.2011 11:37)
- А где сказано, что enum обязан уметь long, long long, и др. ? Эдак и float можно захотеть. - fk0(22.11.2011 18:35)
- Каким образом не канает? Пишет "integer overflow" или что-то подобное? Так тут enum не виноват - попробуйте (1UL<<16), обдумайте. - Сергей Борщ(22.11.2011 18:13)
- логично если был бы фиксированный размер и во втором случае приведение к u8. Кста, llc == (1 << 16) уже не канает - MegaJohn(22.11.2011 17:27)
- Странно llc == (1 - IdleMode(24.11.2011 10:01, )
- вчера эксперементировал типа: enum { lla, llb, llc } lllx = lla; прибавляло один байт, а enum { lla, llb, llc == (1 << 8) } lllx = lla; прибавляло 2 - MegaJohn(22.11.2011 16:46)
- Моя личная практика - использование enum для задания констант, а переменных - тип uint8_t. И все. - КСПшник(22.11.2011 16:26)
- переменные типа enum это контроль кода на уровне компилятора. А ваш uint8_t это что my_func( MOVE_LEFT, 34 ) что my_func( 34, MOVE_LEFT ) однофигственно, а для поиска траблы возможная головная боль - MegaJohn(22.11.2011 17:30)
- Согласен - но зато не возникает подобных проблем с размерностью - а писать кода да, надо повнимательнее! - КСПшник(23.11.2011 09:16)
- enum в C не работает, ещё раз C++. В C можно структуры передавать (вместо enum) или юнионы (внутри которых засунуть enum'ы). Если это всё обернуть в typedef'ы, то сходу даже и не заметишь (декларировать неудобно). - fk0(22.11.2011 21:17)
- Вообще в нормальных ЯВУ есть именованные аргументы... В поделках финских студентов тоже можно, но через ()(): fk0(328 знак., 22.11.2011 21:34 - 21:37)
- Так это ж просто С99. Хотя если его настолько полностью поддерживает только поделка, то... - ReAl(13.12.2011 20:45)
- Вообще в нормальных ЯВУ есть именованные аргументы... В поделках финских студентов тоже можно, но через ()(): fk0(328 знак., 22.11.2011 21:34 - 21:37)
- переменные типа enum это контроль кода на уровне компилятора. А ваш uint8_t это что my_func( MOVE_LEFT, 34 ) что my_func( 34, MOVE_LEFT ) однофигственно, а для поиска траблы возможная головная боль - MegaJohn(22.11.2011 17:30)
- Поэтому C++ лучше, чем C (и ассемблер). Проверка типов нормальная. - fk0(22.11.2011 16:02)
- C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg. - Bjarne(24.11.2011 02:48, )
- Это как? Имеются ввиду разные enumы в одной программе или разные члены одного enumа? При наличии ключа -short-enums размер каждого enuma определяется значением его максимального члена. - Сергей Борщ(22.11.2011 16:41)
- дык открытие в том что часть enum`ов может быть 16-битных, а часть 8-битные =) - MegaJohn(22.11.2011 15:53)
- Действительно открыл! :) Кстати, в GCC - аналогично. Даже опция есть, что-то вроде short-enums - КСПшник(22.11.2011 15:36)