printf 格式说明符中的索引说明

Index specification in printf format specifier

在下面的程序中,printf()函数根据参数索引规范进行打印。

#include <stdio.h>

int main()
{
        printf("%3$d  %4$f  %2$d  %1$d\n", 1,  2,  3,  4.5);
}

输出:

3  4.500000  2  1

所以,我有一个问题,它对任何编译器都有效还是仅支持 GCC 编译器?

如您所料,C standard. But they are not idiosyncratic to the Gnu implementation; they are required by the POSIX standard (specification here 不需要编号参数转换规范(即 n$),并且至少从 1997 版本 2 开始就是这样。

大多数 Unix 和类 unix 实现都具有一定程度的 Posix 合规性,编号参数规范并不是最近才添加的。因此,您可能会在大多数当前的 Unix 和类 Unix 平台中找到支持,包括任何使用 Gnu 标准 C 库(Linux)或 FreeBSD 标准 C 库(Mac OS X ).但是,如果您使用 *printf_p 系列函数,(本机)Windows C 标准库(不符合 Posix)仅提供对编号参数规范的支持。参见 here and here。)