Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么在函数定义之外声明的函数变量不';你不会出错吗? 为什么这个代码在无中的中间(在函数定义之间),而不是抛出一个错误?_C_Syntax_Kernighan And Ritchie_Function Definition - Fatal编程技术网

C 为什么在函数定义之外声明的函数变量不';你不会出错吗? 为什么这个代码在无中的中间(在函数定义之间),而不是抛出一个错误?

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; { 不会抛出错误,因为它曾经是(唯一)有效语法 目前它不是无效的,但不再

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; {
不会抛出错误,因为它曾经是(唯一)有效语法

目前它不是无效的,但不再使用

如果您愿意,您可以阅读更多信息。

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
}