Переопределение предопределенного сообщения об ошибке errno (E2BIG) - PullRequest
0 голосов
/ 03 февраля 2020

Есть ли способ переопределить errno сообщения об ошибках? Например, я работаю с E2BIG и хочу изменить сообщение об ошибке, которое отображается при обнаружении ошибки.

Эти сообщения сохраняются как int, поэтому при переопределении оно будет только позвольте мне изменить его целочисленное значение, которое не очень полезно. Я хочу изменить само сообщение.

#include <string>
#include <iostream>
#include <vector>

int main() 
{
   const std::size_t BUF_SIZE = 256;
   std::vector<char> buffer(BUF_SIZE);
   int errNum = E2BIG;

   auto strerror = strerror_s(buffer.data(), buffer.size(), errNum);

   std::cout << buffer.data();
}

Текущее сообщение об ошибке:

Список аргументов слишком длинный

Но я пытаюсь чтобы изменить это, чтобы сказать что-то немного другое. Есть ли способ сделать это?

1 Ответ

1 голос
/ 03 февраля 2020

Вам нужно написать функцию-обертку, чтобы заполнить любые нужные сообщения об ошибках. Например:

errno_t my_strerror_s(char *buffer, size_t numberOfElements, int errnum)
{
    if (errnum==E2BIG) {
        const char *msg = "my custom error";
        if (numberOfElements < strlen(msg)+1) {
            return -1;
        else {
            strcpy(buffer, msg);
            return 0;
        }
    } else {
        return strerror_s(buffer, numberOfElements, errnum);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...