注意这个问题并不是指省略号。
请考虑以下代码
#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)
给出一个错误 - “太多的论点”。
如果两者都是功能,它们是否也应遵循相同的规则?
当您声明一个没有参数的函数时,它意味着禁用类型检查并使用K&R调用约定。这并不意味着该功能没有参数。
在ANSI中,如果要明确说明函数没有参数,则需要将其声明为fun(void)。
foo(void)不带参数(!!!),而foo()接受一个未指定数量的参数!