我刚刚注意到,当我的代码使用 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/