请注意,此问题不涉及省略号。
考虑以下代码
#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)
出现错误-“参数过多”。
如果两者都是函数,难道它们也不应该遵循相同的规则吗?
答案 0 :(得分:3)
当您声明不带参数的函数时,这意味着禁用类型检查并使用K&R调用约定。这并不意味着该函数没有参数。
在ANSI中,当您想明确地说该函数没有参数时,需要将其声明为fun(void)。
答案 1 :(得分:1)
foo(void)不带参数(!!!),而foo()不带参数个数!
答案 2 :(得分:0)