c - 为什么在函数定义之外声明的函数变量不会引发错误?

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

最佳答案

TL;DR - K&R 风格。

在你的代码中

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

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

目前并非无效,但不再使用。

您可以阅读有关 K&R style syntax here 的更多信息,如果你愿意的话。

关于c - 为什么在函数定义之外声明的函数变量不会引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35511299/

相关文章:

c - C 中的低级函数调用?

c - 链表未被修改

c - 在旧的原始套接字教程中使用 ntop() 而不是 ntoa()

arrays - Javassist CtMethod.make()使用空括号在数组初始化时给出 “syntax error”

python - iadd 运算符 ( += ) 与简单加法有何不同?

c - K&R 练习 2-7,优化?

c - 这段代码有什么有趣的错误吗?

list - Groovy 语言 : how to get difference between two lists of pairs

c - K&R 练习 1-20 - 需要一些说明

c - 递归控制流程