0

有没有办法重新定义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();
}

当前的错误信息是:

Arg 列表太长

但我试图改变它,说一些不同的东西。有没有办法做到这一点?

4

1 回答 1

1

您需要编写一个包装函数来填写您需要的任何自定义错误消息。例如:

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);
    }
}
于 2020-02-03T18:26:01.683 回答