printf 如何在 ANSI-C 中编译(varargs)

How does printf compile in ANSI-C (varargs)

gcc 如何设法在 ANSI-C 中编译 printf?

我看到的每个 printf 原型都使用可变参数,但 ANSI-C 不支持它,例如:

int (*)(const char *, ...)

它有什么技巧吗?如果有,我们可以将它用于我们的 ANSI-C 代码吗?

你的假设全错了。

首先,1990年后就没有所谓的"ANSI-C"了。美国人可能会把C标准称为INCITS/ISO/IEC 9899:2011,但在美国以外的地方没人关心。我们就叫它ISO C.

在过去 40 年左右的时间里,C 语言(不幸的是)一直支持可变参数函数。为了对函数定义进行编码,您需要包含 stdarg.h.

您将此与 1999 年 (C99) 引入的可变参数 混淆了。