c++ - printf/snprintf 格式字符 %N 有什么作用? (不是 %n)

标签 c++

正在检查一些旧代码并发现:

char buf[...];
int i = 1, j =2;
snprintf(buf, "%d-blah_%d-blah_%N", i, j);

注意只有两个传递的 vararg 参数,但是有 3 个格式字符串。

打印

1-blah_2-blah_0

在任何文档中都找不到这个。 %N 是做什么的?

最佳答案

根据标准文档(例如 POSIX printf )它没有定义任何内容(因此 %N 可能是 undefined behavior ,并且在标准中肯定是未指定的行为)。

但是,GNU glibc报价customizing printf能力。您的程序可能已在(其他地方)注册 register_printf_function要处理 %N 的东西。这不是标准的,而是GNU glibc 特定的 (然而,这是一个方便的技巧,但你不能教 GCC format function attribute 知道那个技巧。)。

关于c++ - printf/snprintf 格式字符 %N 有什么作用? (不是 %n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113290/

相关文章:

c++ - 从多个函数指针中提取参数参数列表的元函数

c++ - 使用 glm 沿四元数平移相机

c++ - 在没有注册数据库的情况下使用 ODBC 连接到 SQLite

c++ - 如果过期的 weak_ptr 会给出未定义的行为,那么 owner_less 有什么意义呢?

c++ - D3DX10CreateEffectFromFile 在另一台计算机上返回 E_FAIL

c++ - 非局部非内联变量的初始化 : does it take place strictly before the `main()` function call?

c++ - 通过单个渲染调用写入渲染缓冲区并使用 OpenGL 显示

c++ - 在 C++ 中比较 vector 的最快方法是什么?

c++ - 为什么链接器在虚拟情况下给我一个错误,但在非虚拟情况下却没有?

c++ - 将连字符插入字符串 C++