-
- В плюсах енум - полноценный тип, поэтому он просто не даст подсунуть чужеродную константу вместо правильного энума. Ну и редакторами с автоподстановками никто не пользуется? Все сурово кодят в блокноте? В нормальной среде и вопросов то таких не =AlexD=(13 знак., 05.04.2015 12:17)
- enum - есть средство языка, препроцессор (вместе с директивой define) - надстройка над языком. - Bill(04.04.2015 14:42)
- Печально, коллеги. Нам пора заканчивать пессдеть в оффтопе и начать изучать си. Пятничный вечер перестал быть томным после всего что здесь понаписано. Простите. - Олдфаг(03.04.2015 20:54,
)
- "Какие мы нежные" - VL(04.04.2015 20:20,
)
- Просто строгие к профессиАнальному уровню. В т.ч. Ваше заявление "enum подходит для автоматизации определений X-макросами, а define - нет" огорчает. - Олдфаг(05.04.2015 00:06,
)
- Давайте обсудим подробнее, меня этот вопрос очень интересует. Вы используете Х-макросы, какие-нибудь разворачивающиеся списки в языке С? - VL(05.04.2015 03:36,
)
- Использую всегда и широко. Для ускорения работы и исключения ошибок при множественном создании однородных сущностей. И, поскольку это макросы, без дифайна в них обойтись нельзя. Для автоматического создания прототипов функций, для создания Олдфаг(199 знак., 05.04.2015 08:30,
)
- Это все понятно, возможно, я выразился настолько неуклюже, что оскорбил тем самым тонкий слух профессионала. Есть конкретный вопрос с дифайнами и енумами, можете помочь? VL(1556 знак., 05.04.2015 09:10,
)
- Без компа сейчас, могу только глупости советовать, но может для начала просто попробовать сравнивать значения приведенные к char или uint? Даже вощможно напейсать дифайны для сравнений типа COMPARE_GT(a,b) ((char)(a) > (char)(b)) - Олдфаг(05.04.2015 09:32,
)
- угу, может переклинило что в голове. - VL(05.04.2015 12:36,
)
- угу, может переклинило что в голове. - VL(05.04.2015 12:36,
- На мой взгляд, проще объявить enum через typedef, а при сравнении использовать явное приведение к типу. Bill(146 знак., 05.04.2015 09:31)
- Без компа сейчас, могу только глупости советовать, но может для начала просто попробовать сравнивать значения приведенные к char или uint? Даже вощможно напейсать дифайны для сравнений типа COMPARE_GT(a,b) ((char)(a) > (char)(b)) - Олдфаг(05.04.2015 09:32,
- Сразу скажу, что это не единственное из пятничных огорчений. Кто-то испытывает трудности при вычислении sizeof emum даже при автоматическом присвоении значений! Это же элементарно даже при ручном присвоении значений перечислениям - с помощью тех Олдфаг(16 знак., 05.04.2015 08:52,
)
- Если не затруднит примерчик реализации sizeof для enum. Испытываю трудности с этим. - abivan(06.04.2015 10:38)
- Вот в этой ветке обсуждалось: caxapa.ru/419302.html - Олдфаг(06.04.2015 16:14,
)
- Вот в этой ветке обсуждалось: caxapa.ru/419302.html - Олдфаг(06.04.2015 16:14,
- Навскидку дифайны хуже энумов при вызове функций, т.к. не проверяют принадлежность аргумента набору допустимых значений, и дифайны проигрывают средству typedef в безопасности при объявлении пользовательских типов. В остальном - не грех и применить Олдфаг(11 знак., 05.04.2015 09:08,
)
- Если не затруднит примерчик реализации sizeof для enum. Испытываю трудности с этим. - abivan(06.04.2015 10:38)
- Это все понятно, возможно, я выразился настолько неуклюже, что оскорбил тем самым тонкий слух профессионала. Есть конкретный вопрос с дифайнами и енумами, можете помочь? VL(1556 знак., 05.04.2015 09:10,
- Использую всегда и широко. Для ускорения работы и исключения ошибок при множественном создании однородных сущностей. И, поскольку это макросы, без дифайна в них обойтись нельзя. Для автоматического создания прототипов функций, для создания Олдфаг(199 знак., 05.04.2015 08:30,
- По поводу "огорчает" --> - SciFi(05.04.2015 00:29, картинка)
- самий умный, дааа? RED_DRAGON(05.04.2015 00:48)
- Давайте обсудим подробнее, меня этот вопрос очень интересует. Вы используете Х-макросы, какие-нибудь разворачивающиеся списки в языке С? - VL(05.04.2015 03:36,
- А давайте выпьем водки 8) - Скрипач(04.04.2015 20:24)
- Просто строгие к профессиАнальному уровню. В т.ч. Ваше заявление "enum подходит для автоматизации определений X-макросами, а define - нет" огорчает. - Олдфаг(05.04.2015 00:06,
- "Какие мы нежные" - VL(04.04.2015 20:20,
- enum подходит для автоматизации определений X-макросами, а define - нет - VL(03.04.2015 20:16,
)
- #define можно использовать в условиях препроцессора, enum - нет. Иногда это важно. - il-2(03.04.2015 15:08)
- Не "в условиях предпроцессора", а это директива предпроцессору, и она обрабатывается до компиляции. - Boвa(03.04.2015 15:29)
- с enum-ом можно сделать вот такое. Это проверка превышения количества созданных"объектов" Тут и enum и define :-) abivan(603 знак., 03.04.2015 15:01)
- Хитро :) Только там наверно надо [X - Y + 1] ??? Не??? - il-2(03.04.2015 15:12)
- Это пока "дятел невиданной красы" не впишет enBS_END посредине :) - Evgeny_CD(03.04.2015 15:05)
- :-) есть способ лучше? Был у бы у энума sizeof не было бы вопросов. - abivan(03.04.2015 15:08 - 15:11)
- Если enum подходит, то заменять его дефайном - вредительство. "За это сжигать надо" © - SciFi(03.04.2015 14:29)
- Хе. Ну тогда enum можно везде пихать, оставляя #define для забавы препроцессору. Звероящер(522 знак., 03.04.2015 19:10)
- Ну здрассте. Дефайн может много чего такого, чего enum не может. Но вот перечисления просятся в enum. Хотя бы потому, что enum == enumeration == перечисление. - SciFi(03.04.2015 19:22)
- Это да. Вопрос в другом. Чего по-максимому надо пихать в enum. Ну например, есть протокол обмена, там список команд. Их можно как дефайном захерачить, так и в енум запихать. Звероящер(85 знак., 03.04.2015 19:37)
- Лучше. Ибо уменьшает энтропию. - Скрипач(03.04.2015 19:43)
- Вы не заметили ключевое слово "подходит". Этот пример для enum скорее не подходит. Скорее, это не перечисление, а присвоение мнемоникам кодов команд. Хотя это уже некая серая зона, согласен. - SciFi(03.04.2015 19:40)
- Это да. Вопрос в другом. Чего по-максимому надо пихать в enum. Ну например, есть протокол обмена, там список команд. Их можно как дефайном захерачить, так и в енум запихать. Звероящер(85 знак., 03.04.2015 19:37)
- Натягивание совы на глобус. Скрипач(215 знак., 03.04.2015 19:12)
- Согласен. Примера лучше не придумал. - Звероящер(03.04.2015 19:33)
- Ну здрассте. Дефайн может много чего такого, чего enum не может. Но вот перечисления просятся в enum. Хотя бы потому, что enum == enumeration == перечисление. - SciFi(03.04.2015 19:22)
- ++ - ASDFS(03.04.2015 15:34)
- Хе. Ну тогда enum можно везде пихать, оставляя #define для забавы препроцессору. Звероящер(522 знак., 03.04.2015 19:10)
- #define это макроподстановка, а enum - определение типа. - Скрипач(03.04.2015 14:28)