Как обеспечить контекст при обработке ошибок в C? - PullRequest
1 голос
/ 08 мая 2019

Стандартные библиотечные функции устанавливают errno для предоставления контекста. Мы используем его для устранения неоднозначности.

Но что я могу сделать с функциями в моей программе? Я хочу написать что-то вроде этого:

void some_func(struct error *e, ...);

Указатель на локальную переменную передается функции, которая может завершиться с ошибкой. Если происходит сбой, он устанавливает контекст ошибки для переменной, переданной указателем.

Что важно, так это возможность предоставлять контекст при возникновении ошибки.

Как я могу это сделать?

Основная цель - написать гибкое программное обеспечение.

Ниже я кратко опишу свое исследование по поиску чего-то подходящего.

Я уже пытался реализовать структуру:

struct error {
        enum error_type type;
        char *msg;
};

Есть кое-что, в чем я не уверен - регистрация новых элементов перечисления error_type. Я не уверен, что в следующем потоке нет рисков:

  1. Зарегистрировать новый тип ошибки в error.h
  2. Вернуть ошибку с этим типом из функции

Есть ли риски в этом потоке и каковы они? Могут ли они быть устранены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...