定义预定义的errno错误消息(E2BIG)

问题描述 投票:0回答:1

是否可以重新定义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列表过长

但是我正在尝试将其更改为其他说法。有办法吗?

c++ errno strerror
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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.