可靠/便携是_snprintf?

时间:2016-04-24 13:44:50

标签: c++

来自_snprintf stdio.h的可靠程度 - 我的意思是它丢失的几率是多少?

它会在过去15年的所有编译器上运行吗? gcc 4.1 +,VC ++ 6,以及没有人真正使用的所有编译器,如borland和其他......

我正在编写一个具有c ++ 98兼容性的库, AMAZED snprintf已在c ++ 11中引入 - 所以最近。它似乎对编写安全代码至关重要 - 防止缓冲区溢出,但是 - 从c ++ 98中遗漏...

编辑:我买不起第三方图书馆或stdio.h

以外的任何图书馆

1 个答案:

答案 0 :(得分:1)

简短回答:_snprintf不可靠。以下示例无法在Linux上使用gcc 4.9.3和clang 3.6.2编译:

#include <stdio.h>
int main(int, char*[])
{
    char buffer[25];
    _snprintf(buffer, sizeof(buffer), "Hello world %d\n", 123);
    return 0;
}