是否可以重新定义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列表过长
但是我正在尝试将其更改为其他说法。有办法吗?
您将需要编写包装函数来填写所需的任何自定义错误消息。例如:
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);
}
}