3

为什么这个带有整数声明的代码在中间(在函数定义之间)没有抛出错误?

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

2 回答 2

3

TL;DR - K&R 风格。

在您的代码中

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

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

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

如果需要,您可以在此处阅读有关K&R 样式语法的更多信息。

于 2016-02-19T17:33:19.793 回答
1

这个

void func(i, j)
int i,j; //declare types of arguments
{
  //function body
}

称为K&R语法。它已经过时了,但仍在一些 C 项目中使用,例如bash.

于 2016-02-19T17:36:14.037 回答