C 为什么在函数定义之外声明的函数变量不';你不会出错吗? 为什么这个代码在无中的中间(在函数定义之间),而不是抛出一个错误?
1) 为什么它在语法上是正确的。C 为什么在函数定义之外声明的函数变量不';你不会出错吗? 为什么这个代码在无中的中间(在函数定义之间),而不是抛出一个错误?,c,syntax,kernighan-and-ritchie,function-definition,C,Syntax,Kernighan And Ritchie,Function Definition,1) 为什么它在语法上是正确的。 2) 这样做有什么用 #包括 void func(int,int); int main() { INTA,b; a=10; b=20; func(a,b); 返回0; } 无效函数(i,j) int i,j//为什么这不会抛出错误。 { printf(“a=i=%d\nb=j=%d\n”,i,j); } TL;DR-K&R风格 在代码中 void func(i, j) int i,j; { 不会抛出错误,因为它曾经是(唯一)有效语法 目前它不是无效的,但不再
2) 这样做有什么用
#包括
void func(int,int);
int main()
{
INTA,b;
a=10;
b=20;
func(a,b);
返回0;
}
无效函数(i,j)
int i,j//为什么这不会抛出错误。
{
printf(“a=i=%d\nb=j=%d\n”,i,j);
}
TL;DR-K&R风格
在代码中
void func(i, j)
int i,j; {
不会抛出错误,因为它曾经是(唯一)有效语法
目前它不是无效的,但不再使用
如果您愿意,您可以阅读更多信息。此
void func(i, j)
int i,j; //declare types of arguments
{
//function body
}
被称为语法。它已经过时了,但仍在一些C项目中使用,如
bash
,如下所述,它在语法上是正确的,因为它是有效的——这是最初的处理方式。不过,现在使用这种语法没有任何用处,除非您使用的是不支持ANSI C的K&R风格编译器,并且从未为K&R风格定义的函数提供原型。要找出原因,请在函数原型和定义中将int
更改为char
。
void func(i, j)
int i,j; //declare types of arguments
{
//function body
}