为什么在函数定义之外声明的函数变量不会抛出错误?

时间:2016-02-19 17:31:16

标签: c syntax kernighan-and-ritchie function-definition

为什么这个代码在不知名的地方(中间函数定义)中有整数声明,而不是抛出错误?

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);
}

2 个答案:

答案 0 :(得分:3)

TL; DR - K&amp; R风格。

在您的代码中

void func(i, j)
int i,j; {

不会抛出错误,因为它 一个(唯一的)有效语法,曾经一度。

目前 无效 ,但不再使用。

如果需要,您可以阅读有关K&R style syntax here的更多信息。

答案 1 :(得分:1)

class

称为K&R语法。它已经过时但仍在某些C项目中使用,例如void func(i, j) int i,j; //declare types of arguments { //function body }