调用参数数量未定义的 C 函数

Calling of C functions with undefined number of parameters

注意这个问题没有提到省略号。

考虑以下代码

#include <stdio.h>

void foo() {
    printf("I AM AWESOME\n");
}

main(void) {
    foo(1,2,3);
    foo();
return 0;
}

该程序运行完美并提供了输出。 但是,在 'main' 的情况下,这与

无关

main(void)

main()

当,定义foo为

foo(void)

给出错误 - "too many arguments"。

如果两者都是函数,它们不应该也遵循相同的规则吗?

当您声明一个不带参数的函数时,这意味着禁用类型检查并使用 K&R 调用约定。不代表函数没有参数

在ANSI中,当你想显式声明函数没有参数时,你需要将其声明为fun(void)。

foo(void) 不带参数 (!!!),而 foo() 带参数数量不详!

在 C 语言中还有一个叫做可变参数数量的东西

 void foo(int x, ...)

https://www.geeksforgeeks.org/variable-length-argument-c/