“...”在 C 中作为函数参数有什么作用?

what does "..." do as a function argument in C?

一直想知道C的printf函数是怎么工作的,所以决定去看看gcc的stdio.h定义。令我惊讶的是,gcc 中的 printf 函数是用参数“const char*, . . ”定义的。我尝试在我制作的一个简单程序中为自己做这件事。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int Print(const char *text, ...) {

    printf("%s\n", text);
}

int main() {
    Print("Hello, World!", "a");
}

我可以向其中传递任何我想要的参数,即使这些参数不会有任何未来的访问点。我想知道更多关于这个,我想知道是否有人有更多信息。

这就是 ISO C 定义语法的方式,用于声明函数采用可变数量或类型的参数。 使用带有 stdarg.h 的 ... 符号,您可以实现可变函数:接受无限数量参数的函数。它的用法在 Gnu 库 manual.

中有解释

您可以使用 stdarg.h 中的 va_args 查看参数。 Here 是很好的入门教程。

您还可以实现可变参数宏SOME_MACRO(...)。为此你可以参考这个 thread.