реклама на сайте
подробности

 
 
> CPP enum с минусовыми значениями, насколько это правильно
k155la3
сообщение May 25 2017, 06:25
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AnatolyT
сообщение May 25 2017, 08:00
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 29-03-10
Пользователь №: 56 269



Постоянно применяю, только не enum, а int. Обычная практика, если функция возвращает отрицательное значение, это тип ошибки, если ноль или положительное значение, то все Ок или результат. С enum не пробовал, а зачем, int можно преобразовать или интерпретировать практически любым типом, как целое, символ или логическое значение. Удобно во вложенных функциях, возвращает тип ошибки на самый верх.
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 25 2017, 08:47
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(AnatolyT @ May 25 2017, 11:00) *
. . . .
Удобно во вложенных функциях, возвращает тип ошибки на самый верх.

Ok.

Я при "транизитном" возврате по ошибке, при каждом выходе "вверх", код ошибки умножаю на 10 - тогда видно с какого уровня
"всплыло". Более правильно наверно, использовать исключения, но пока делаю так.


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 16:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016