在代码的某些地方,我打印如下调试消息:

int ret = getLinkSpeed(device.getSysName(), linkSpeed);
if (ret < 0)
{
    logDebug("Failed to obtain port speed for this device. Error: " + std::string(strerror(errno)));
}

documentation尚不清楚,在某些情况下strerror是否会返回0(这将导致我的代码崩溃)。有人知道它是否安全吗?

最佳答案

为什么不编写一个函数来做到这一点:

string ErrStr() {
   char * e = strerror(errno);
   return e ? e : "";
}

这是易于使用的,可自我记录的,可以调整输出格式的,并涵盖了strerror()可能返回NULL的可能性(我不知道是否可以)。

09-09 23:15