调用参数数量未定义的 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, ...)
注意这个问题没有提到省略号。
考虑以下代码
#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, ...)