|
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 25 2017, 08:00
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 29-03-10
Пользователь №: 56 269

|
Постоянно применяю, только не enum, а int. Обычная практика, если функция возвращает отрицательное значение, это тип ошибки, если ноль или положительное значение, то все Ок или результат. С enum не пробовал, а зачем, int можно преобразовать или интерпретировать практически любым типом, как целое, символ или логическое значение. Удобно во вложенных функциях, возвращает тип ошибки на самый верх.
|
|
|
|
|
May 25 2017, 08:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(AnatolyT @ May 25 2017, 11:00)  . . . . Удобно во вложенных функциях, возвращает тип ошибки на самый верх. Ok. Я при "транизитном" возврате по ошибке, при каждом выходе "вверх", код ошибки умножаю на 10 - тогда видно с какого уровня "всплыло". Более правильно наверно, использовать исключения, но пока делаю так.
|
|
|
|
Сообщений в этой теме
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 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 Кстати вы заметили, как в С++11 поправили enum? Я ... May 28 2017, 09:13 dxp QUOTE (sigmaN @ May 28 2017, 16:13) Кстат... May 28 2017, 13:02 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
|
|
|