正在检查一些旧代码并发现:
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/