|
CPP enum с минусовыми значениями, насколько это правильно |
|
|
|
May 25 2017, 06:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Вопрос касается кода возврата функции, а именно удачно или нет она отработала. Если плюс - удачно, информация в коде возврата - справочная. Если минус - критичная ошибка, ф-ия не отработала. (?) Насколько такой подход (с отрицательным enum) правильный-феншуйный-политкорректный ? ps - minus_4 итд приведено для наглядности, в реале - ест-но - там симв. имя ошибки вроде eErr_ADC_Ready А реализовал так: Код enum TEnum { minus_4 = -4, minus_3, minus_2, minus_1, null_0 = 0, plus_1, plus_2, plus_3, plus_4 } my_enum;
. . .
int MyFun(void) { ... ... ... return(minus_2); ..... .... return(plus_3); }
. . .
RetCode = MyFun();
if( RetCode > 0 ) { . . . . ошибок нет, в RetCode в инф. о статусе выполнения. } else // минусы и 0 { . . . . разбор ошибок }
Сообщение отредактировал k155la3 - May 25 2017, 07:20
|
|
|
|
|
 |
Ответов
|
May 28 2017, 13:02
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (sigmaN @ May 28 2017, 16:13)  Кстати вы заметили, как в С++11 поправили enum? Я имею ввиду enum class. Убрали возможность неявного приведения к int, ограничили областть видимости перечислений?
Конечно же для совместимости им пришлось оставить старый вариант, но тем не менее это еще раз доказывает, что ход мыслей программиста на плюсах должен всегда по возможности двигаться в сторону более строгой типизации. Да, улучшения налицо. Только enum class - это, я понял, как раз создание пространства имён для элементов перечисления, а тип там указывается, например, как enum EnumName : uint32_t (тип можно использовать любой целый, который подходит для хранения представления). Жаль, что некоторые популярные компиляторы - например, IAR, - не поддерживают C++11. Или я отстал о жизни?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
k155la3 CPP enum с минусовыми значениями May 25 2017, 06:25 novikovfb Почему бы и нет. Одно не понятно: чем запись minu... May 25 2017, 06:32 k155la3 Цитата(novikovfb @ May 25 2017, 09:32) По... May 25 2017, 06:35 _pv Цитатаinteger constant expression whose value is r... May 25 2017, 07:22 k155la3 "integer constant expression whose value is r... May 25 2017, 07:32  AlexRayne Цитата(k155la3 @ May 25 2017, 11:32) Инте... May 25 2017, 09:46   k155la3 Цитата(AlexRayne @ May 25 2017, 12:46) . ... May 25 2017, 10:35    AlexRayne Цитата(k155la3 @ May 25 2017, 14:35) (1) ... May 25 2017, 12:27   Сергей Борщ QUOTE (AlexRayne @ May 25 2017, 12:46) Ме... May 25 2017, 12:47    k155la3 Цитата(Сергей Борщ @ May 25 2017, 15:47) ... May 26 2017, 07:25 AnatolyT Постоянно применяю, только не enum, а int. Обычная... May 25 2017, 08:00 k155la3 Цитата(AnatolyT @ May 25 2017, 11:00) . .... May 25 2017, 08:47 x893 По смыслу - enum это набор неизменяемых именованны... May 25 2017, 16:36 jcxz Список ошибок часто определяю так:
enum {ERR_1 = 1... May 25 2017, 20:47 AnatolyT Непонятно какие преимущества дает использование en... May 26 2017, 09:11 novikovfb Цитата(AnatolyT @ May 26 2017, 13:11) Неп... May 26 2017, 09:46  Сергей Борщ QUOTE (novikovfb @ May 26 2017, 12:46) пр... May 26 2017, 09:54 k155la3 Цитата(AnatolyT @ May 26 2017, 12:11) Неп... May 26 2017, 10:01  jcxz Цитата(k155la3 @ May 26 2017, 12:01) Кром... May 28 2017, 10:26 sigmaN По-моему идеально использовать enum по возможности... May 26 2017, 10:10 AlexRayne Цитата(sigmaN @ May 26 2017, 13:10) Кодty... May 26 2017, 13:33  k155la3 Цитата(AlexRayne @ May 26 2017, 16:33) si... May 26 2017, 14:38 AnatolyT Может быть чтобы не было соблазна добавить в начал... May 26 2017, 10:25 sigmaN ЦитатаМожет быть чтобы не было соблазна добавить в... May 26 2017, 10:58 sigmaN Цитатаа почему Вы большими буквами значения енума ... May 26 2017, 15:45 dxp QUOTE (sigmaN @ May 26 2017, 22:45) да эт... May 27 2017, 05:21  AlexRayne Цитата(dxp @ May 27 2017, 09:21) Скорее н... May 29 2017, 07:42 sigmaN ЦитатаThe enum type
The compiler will use the smal... May 28 2017, 11:17 jcxz Цитата(sigmaN @ May 28 2017, 13:17) The c... May 29 2017, 08:35 sigmaN ЦитатаТолько enum class - это, я понял, как раз со... May 28 2017, 13:50 sigmaN Ну тогда надо конкретизировать на примерах.
Я так... May 29 2017, 08:55 jcxz Цитата(sigmaN @ May 29 2017, 10:55) Я так... May 29 2017, 09:34 sigmaN Вот и я гворю: уточнять надо. Кто куда и кого расш... May 29 2017, 10:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|