我刚刚注意到,当我的代码使用 Visual C++ 2013 编译时,_snprintf 函数在目标缓冲区太小时时将 errno 设置为 ERANGE(结果太大)。这似乎没有记录:
https://msdn.microsoft.com/en-us/library/2ts7cx93.aspx

我期望返回值为 -1(代码也是如此),但不会干预 errno。这种行为是否记录在其他地方,是否可能是最近的变化? C++11 标准(我相信它添加了 snprintf)对此有什么要说的吗?

最佳答案



是的,您描述的行为对于 snprintf 是正确的。
在 C 标准之后(被 C++ 标准称为):



至于 errno - 函数描述没有说明它,所以这适用:

关于c++ - Visual C++ _snprintf 将 errno 设置为 ERANGE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32048886/

10-11 22:07
查看更多