C++ 重新定义预定义的errno错误消息(E2BIG)

C++ 重新定义预定义的errno错误消息(E2BIG),c++,errno,strerror,C++,Errno,Strerror,有没有办法重新定义errno错误消息?例如,我正在使用E2BIG,我想更改遇到错误时显示的错误消息 这些消息存储为int,因此当我重新定义它时,只允许我更改它的整数值,这不是很有用。我想更改消息本身 #include <string> #include <iostream> #include <vector> int main() { const std::size_t BUF_SIZE = 256; std::vector<char&g

有没有办法重新定义
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();
}
#包括
#包括
#包括
int main()
{
常数std::size\u t BUF\u size=256;
std::向量缓冲区(BUF_大小);
int errNum=E2BIG;
auto strerror=strerror_s(buffer.data(),buffer.size(),errNum);

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

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);
    }
}
errno\t my\u strerror\s(char*buffer,size\t numberOfElements,int errnum)
{
如果(errnum==E2BIG){
const char*msg=“我的自定义错误”;
if(numberOfElements
这是一个很好的方法。无论如何,如果我需要将E2BIG传递给另一个调用strerror_s的函数(一个无法更改的函数),那么E2BIG消息本身就需要是自定义错误消息。你知道是否可以重新定义E2BIG本身的消息吗?@BrentMB这是不可能的。