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

Redefining a predefined errno error message (E2BIG)

本文关键字:errno 错误 消息 E2BIG 预定义 定义 新定义      更新时间:2023-10-16

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

当前错误消息为:

参数列表太长

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

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

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);
}
}