3
为什么这个Code在整个声明的中间无处(中间函数定义),不抛出错误?为什么在其函数定义之外声明的函数变量不会引发错误?
1)为什么它在语法上是正确的。
2)这样做有什么用处?
#include <stdio.h>
void func(int, int);
int main()
{
int a, b;
a = 10;
b = 20;
func(a, b);
return 0;
}
void func(i, j)
int i,j; //why does this doesn't throw error.
{
printf("a = i = %d\nb = j = %d\n", i, j);
}
正如以下回答,它在语法上是正确的,因为它是有效的 - 这是事情完成的原始方式。现在没有任何使用这种语法的方法,除非你碰巧使用了不支持ANSI C的K&R风格的编译器。 – mah
而不是** EVER **为K&R风格定义的函数提供原型。为了找出原因,在函数原型和定义中将'int'更改为'char'。 –