【发布时间】:2013-02-21 17:06:14
【问题描述】:
我正在为线程安全的 strerror_r 提供一个 c++ 包装器,代码如下:
struct MyErrno {};
std::ostream& operator<<(std::stream& os, const MyErrno& err)
{
const int len = 128
char buf [len];
os << strerror_r(errno, buf, len);
return os;
}
这只是一个简单的包装器,所以在 C++ 代码中我可以这样说
<< MyErrno() << ..
并使用 errno 的线程安全打印。使用 128 似乎也可以,因为手册页说 strerror_r 将返回一个指向不可变静态字符串的指针(可能是空终止)或在用空终止符填充它之后返回指向 buf 的指针,无论大小...只是不确定这个简单的包装器是否有问题(可能有问题)
【问题讨论】:
-
这段代码有什么具体问题吗?