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'。 –