什么是主(ac,av)int ac; char ** av; {...}?

时间:2012-06-03 13:04:28

标签: c

  

可能重复:
  How many styles of writing functions are there in C?

我看到一个用C语言编写的程序,其定义为main

main(ac, av) int ac; char **av;
{
    ...
}

而不是

int main(int argc, char **argc)
{
    ...
}

我从未在第一个代码中看到过C语法。它是什么,我在哪里可以阅读它?

1 个答案:

答案 0 :(得分:7)

第一个是旧式的ANSI前C函数头,之后函数原型成为编写代码的通用/标准方式。

经常格式化如下:

main(ac, av) 
int ac; 
char **av;
{
    ...
}

在初始括号组之后看到的是main中参数的类型声明。另请注意,未声明int返回类型。

没有人真正编写这样的代码,坚持第二种形式。

如果你可以挖掘original white book by Kernighan and Ritchie(第1版,预ANSI版),你会看到那个形式(正如@dirkgently正确地提到这有时被称为K& R样式C)在其他较旧的C书中。

如果您感到好奇,请查看此链接 Obsolete Forms of Function Declarations and Definitions。在谷歌搜索“旧式C函数声明”会带来一些点击。