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

 
 
> Коды завершения функции
ViKo
сообщение Apr 24 2018, 05:26
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Иногда приходится придумывать некие коды, информирующие о той или иной ошибке при выходе из функции. К EXIT_SUCCESS и EXIT_FAILURE добавляются дополнительные. Не задавались ли вы целью привести коды в систему, чтобы пользоваться во всех случаях? Если да, поделитесь, пожалуйста идеями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Apr 25 2018, 08:51
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (jcxz @ Apr 25 2018, 15:41) *
Если кто-то знает другое (или про компилятор использующий большее число регистров) - плиз приведите аргументы.

Я вообще никогда не задумывался над этим. Возвращал стурктуры, и всё. Методами класса. Т.к. использую Си++, но это наверно сути не меняет. Возвращал структуры до 100 байт размером. Думаю, что если есть ограничение, компилятор какую-то подстановку выполняет. Но разве это имеет значение?

QUOTE (Kabdim @ Apr 25 2018, 15:58) *
Вряд ли эта ОЗУ вся забита кодом, т.е. реально упаковать код ошибки + pc в 32битное слово, или +lr и возвращать 64 бита.

По-прежнему не понимаю вас)
Вот пример возвращаемой структуры:
CODE
typedef struct FuncResult {
    CodeResult result;
    uint32_t lrReg;
    uint32_t pcReg;
};

Правильно?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Apr 25 2018, 08:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(jcxz @ Apr 25 2018, 11:38) *
Не понятна эта фраза. wacko.gif

Просто битовая упаковка структуры.
Цитата(haker_fox @ Apr 25 2018, 11:51) *
По-прежнему не понимаю вас)
Вот пример возвращаемой структуры:
Код
typedef struct FuncResult {
    CodeResult result;
    uint32_t lrReg;
    uint32_t pcReg;
};

Правильно?

В стартовом варианте, до уапковки - да. Только я бы добавил еще bool для детектирование ошибка/без ошибок. Без ошибки значения структуры нужно использовать для возвращения собственно результата.
Т.е. скорее
Код
template<class T, class E>struct Result {
    bool is_valid;
    union {
        T t;
        struct {
            E e;
            uint32_t lrReg;
            uint32_t pcReg;
        }
    }
}
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 25 2018, 09:03
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Kabdim @ Apr 25 2018, 16:55) *
Только я бы добавил еще bool для детектирование ошибка/без ошибок.

Я бы добавил в эту структуру конструктор для установки членов структуры в значения по умолчанию. Можно добавить метод isError(), isSuccess() и т.д. и т.п. 1111493779.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 25 2018, 09:06
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(haker_fox @ Apr 25 2018, 12:03) *
Я бы добавил в эту структуру конструктор для установки членов структуры в значения по умолчанию. Можно добавить метод isError(), isSuccess() и т.д. и т.п. 1111493779.gif

......вот так и рождается калокуб. Когда для записи одного значения в регистр периферии вызывается куча функций и получается монстр..... laughing.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 25 2018, 09:44
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (jcxz @ Apr 25 2018, 17:06) *
......вот так и рождается калокуб. Когда для записи одного значения в регистр периферии вызывается куча функций и получается монстр..... laughing.gif

Я не знаю, что такое "калокуб", хотя наслышан о нём. А вообще, какая разница у кого что рождается, главное, чтобы у самих всё было замечательно rolleyes.gif

QUOTE (AlexandrY @ Apr 25 2018, 17:32) *
Как-то мало энтузиазма.
Наверно начать надо было бы с абстрактного синглтона фабрики объектов ошибок.
На фабрике регистрировались бы все заинтересованные сторонние классы которым нужно знать и реагировать на ошибки.
При регистрации классы обменивались бы своими делегатами и получали бы объекты готовых к использованию типизированных ошибок там с сериализацей, потоками, логами, конвертерами и прочей х...
И крышеснос готов. biggrin.gif

Ох... житие мое rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Коды завершения функции   Apr 24 2018, 05:26
- - twix   ...   Apr 24 2018, 05:37
- - arhiv6   Например, есть стандартные системные наборы кодов ...   Apr 24 2018, 05:46
- - ViKo   Хорошие коды. Но для встроенной программы избыточн...   Apr 24 2018, 05:59
- - Arlleex   Я обычно пишу модульно. То есть есть драйвер, допу...   Apr 24 2018, 06:36
- - ViKo   Меня немного смущает, что имя тип возвращаемого ко...   Apr 24 2018, 07:01
- - ViKo   Ну, вот такой набор прикинул, скомпилировал из раз...   Apr 24 2018, 09:47
|- - haker_fox   QUOTE (ViKo @ Apr 24 2018, 17:47) Ну, вот...   Apr 24 2018, 10:03
|- - ViKo   Цитата(haker_fox @ Apr 24 2018, 13:03) Вс...   Apr 24 2018, 10:12
|- - Kabdim   Цитата(haker_fox @ Apr 24 2018, 13:03) Кс...   Apr 24 2018, 10:54
|- - haker_fox   QUOTE (Kabdim @ Apr 24 2018, 18:54) Возвр...   Apr 24 2018, 14:10
- - one_eight_seven   ЦитатаНу, вот такой набор прикинул, скомпилировал ...   Apr 24 2018, 10:19
|- - ViKo   Цитата(one_eight_seven @ Apr 24 2018, 13...   Apr 24 2018, 10:25
- - one_eight_seven   ЦитатаЯ всегда делаю для себя. Но так, чтобы други...   Apr 24 2018, 10:30
- - ViKo   Э, если бы работа в группе заключалась в использов...   Apr 24 2018, 10:35
- - HardEgor   Цитата(ViKo @ Apr 24 2018, 12:26) Иногда ...   Apr 24 2018, 11:27
- - Kabdim   У вас в чипе 4Гб памяти? Но в общем, если не паков...   Apr 24 2018, 14:39
|- - jcxz   Цитата(Kabdim @ Apr 24 2018, 17:39) Наско...   Apr 24 2018, 16:28
|- - Kabdim   Цитата(jcxz @ Apr 24 2018, 19:28) Это в к...   Apr 25 2018, 07:37
- - k155la3   Цитата(ViKo @ Apr 24 2018, 08:26) Иногда ...   Apr 24 2018, 14:59
- - ViKo   Из функции можно возвратить структуру, в любом пра...   Apr 24 2018, 18:39
|- - jcxz   Цитата(ViKo @ Apr 24 2018, 21:39) Из функ...   Apr 24 2018, 18:44
|- - AlexandrY   Цитата(ViKo @ Apr 24 2018, 21:39) Из функ...   Apr 25 2018, 05:57
|- - ViKo   Цитата(AlexandrY @ Apr 25 2018, 08:57) Ща...   Apr 25 2018, 06:08
|- - AlexandrY   Цитата(ViKo @ Apr 25 2018, 09:08) Действи...   Apr 25 2018, 06:12
- - ViKo   А как насчет высказывания jcxz? ЦитатаТолько я все...   Apr 25 2018, 06:23
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 09:23) Я думаю...   Apr 25 2018, 07:05
- - ViKo   Первая цитата не показывает, что размер структуры ...   Apr 25 2018, 07:33
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 10:33) Первая ...   Apr 25 2018, 07:41
|- - ViKo   Цитата(jcxz @ Apr 25 2018, 10:41) Если не...   Apr 25 2018, 08:25
|- - jcxz   И откуда сиё взято? В "IAR C/C++ Development ...   Apr 25 2018, 08:38
- - haker_fox   QUOTE (Kabdim @ Apr 24 2018, 22:39) У вас...   Apr 25 2018, 07:38
|- - Kabdim   Цитата(haker_fox @ Apr 25 2018, 10:38) ОЗ...   Apr 25 2018, 07:58
- - ViKo   http://infocenter.arm.com/help/topic/com.a...0042F...   Apr 25 2018, 08:42
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 11:42) Я, прав...   Apr 25 2018, 09:00
||- - Kabdim   Цитата(haker_fox @ Apr 25 2018, 12:03) Я ...   Apr 25 2018, 09:09
||- - AlexandrY   Цитата(haker_fox @ Apr 25 2018, 12:03) Я ...   Apr 25 2018, 09:32
|- - Сергей Борщ   QUOTE (haker_fox @ Apr 25 2018, 10:51) Во...   Apr 25 2018, 09:20
- - one_eight_seven   ЦитатаДумаю, что если есть ограничение, компилятор...   Apr 25 2018, 09:06
|- - jcxz   Цитата(one_eight_seven @ Apr 25 2018, 12...   Apr 25 2018, 09:12
- - one_eight_seven   ЦитатаВсё универсальное - неоптимально по определе...   Apr 25 2018, 09:14
- - arhiv6   А кто-нибудь использует для обработки ошибок CExce...   Apr 25 2018, 10:43
|- - Forger   Цитата(arhiv6 @ Apr 25 2018, 13:43) А кто...   Apr 25 2018, 17:47
|- - jcxz   Цитата(Forger @ Apr 25 2018, 20:47) Это к...   Apr 25 2018, 18:05
||- - Forger   Цитата(jcxz @ Apr 25 2018, 20:58) Ну да -...   Apr 25 2018, 18:11
|||- - jcxz   Цитата(Forger @ Apr 25 2018, 21:11) Я лич...   Apr 25 2018, 18:23
|||- - Forger   Цитата(jcxz @ Apr 25 2018, 21:23) Для ава...   Apr 25 2018, 18:29
||- - arhiv6   Цитата(jcxz @ Apr 26 2018, 01:05) Ну да -...   Apr 26 2018, 02:21
|- - jcxz   Цитата(Forger @ Apr 25 2018, 20:47) Читае...   Apr 25 2018, 18:14
|- - Forger   Цитата(jcxz @ Apr 25 2018, 21:14) Читаемо...   Apr 25 2018, 18:21
|- - AlexandrY   Цитата(Forger @ Apr 25 2018, 21:21) В гол...   Apr 25 2018, 18:32
||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 21:32) Кс...   Apr 25 2018, 18:57
||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 21:38) Уточн...   Apr 25 2018, 19:00
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:00) Ку...   Apr 25 2018, 19:08
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 22:08) ... н...   Apr 25 2018, 19:23
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:23) А ...   Apr 25 2018, 19:30
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 22:30) Напри...   Apr 25 2018, 19:51
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:51) Вы...   Apr 25 2018, 20:13
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 23:13) Я исп...   Apr 25 2018, 20:22
|||- - Forger   Возвращаясь к теме: http://softwaremaniacs.org/blo...   Apr 25 2018, 20:37
||- - jcxz   Цитата(Forger @ Apr 25 2018, 21:57) Очеви...   Apr 25 2018, 19:08
||- - Forger   Цитата(jcxz @ Apr 25 2018, 22:08) "Д...   Apr 25 2018, 19:17
|- - jcxz   Цитата(Forger @ Apr 25 2018, 21:21) Вовсе...   Apr 25 2018, 18:33
- - dimka76   В комплекте GCC в папке arm-none-eabi\include...   Apr 25 2018, 18:11
- - haker_fox   Коллеги, маленькое лирическое отступление) Прошу н...   Apr 26 2018, 02:33
- - juvf   не получиться универсального енума, глупости это. ...   Apr 28 2018, 18:19
|- - Forger   Цитата(juvf @ Apr 28 2018, 21:19) Чужой к...   Apr 28 2018, 21:50
- - haker_fox   QUOTE (juvf @ Apr 29 2018, 02:19) не полу...   May 2 2018, 04:13
|- - juvf   Цитата(haker_fox @ May 2 2018, 09:13) Как...   May 2 2018, 16:26
|- - haker_fox   QUOTE (juvf @ May 3 2018, 00:26) Чаще я о...   May 3 2018, 00:27
|- - AlexandrY   Цитата(haker_fox @ May 3 2018, 03:27) Пон...   May 3 2018, 05:52
||- - Forger   Цитата(AlexandrY @ May 3 2018, 08:52) ......   May 3 2018, 08:50
||- - AlexandrY   Цитата(Forger @ May 3 2018, 11:50) Поэтом...   May 3 2018, 10:04
||- - Forger   Цитата(AlexandrY @ May 3 2018, 13:04) Стр...   May 3 2018, 10:49
||- - AlexandrY   Цитата(Forger @ May 3 2018, 13:49) это но...   May 3 2018, 13:37
||- - Forger   Цитата(AlexandrY @ May 3 2018, 16:37) На ...   May 3 2018, 15:23
|- - juvf   Цитата(haker_fox @ May 3 2018, 05:27) Пон...   May 4 2018, 07:17
|- - Forger   Цитата(juvf @ May 4 2018, 10:17) У Alexan...   May 4 2018, 08:47
|- - juvf   Цитата(Forger @ May 4 2018, 13:47) остали...   May 4 2018, 09:14
|- - Forger   Цитата(juvf @ May 4 2018, 12:14) а я ушел...   May 4 2018, 09:54
- - ViKo   Я постарался дать обобщенные имена ошибкам. А как ...   May 2 2018, 06:45
- - ViKo   Кстати, в данное время я решил выдавать результаты...   May 3 2018, 03:02
- - ViKo   Можно даже скомбинировать тип устройства и тип оши...   May 3 2018, 05:28
- - Arlleex   ЦитатаЯ скажем везде где можно использую глобальны...   May 3 2018, 14:45
|- - AlexandrY   Цитата(Arlleex @ May 3 2018, 17:45) С рос...   May 3 2018, 17:46
- - Arlleex   ЦитатаЭто у вас весьма маленькое приложение. А я и...   May 3 2018, 19:22
|- - haker_fox   QUOTE (Arlleex @ May 4 2018, 03:22) А бло...   May 4 2018, 01:22
|- - AlexandrY   Цитата(Arlleex @ May 3 2018, 22:22) Истор...   May 4 2018, 07:55
- - AnatolyT   Пишу для м\к на чистом С, для приложений на п...   May 4 2018, 06:04
- - ViKo   Я - о своем. Все уже придумано до нас. https://ru....   May 4 2018, 08:57
2 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 06:31
Рейтинг@Mail.ru


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