函数声明之后的行是什么,但是函数本身之外

时间:2015-06-07 01:06:07

标签: c

如果主函数声明后的两行出现在C代码中,这是什么意思?

int main(argc,argv)
  int argc;
  char *argv[];
{
  // main function body
}

我以前从未见过这样的事情。代码工作正常,但我很想知道这意味着什么。谢谢!

3 个答案:

答案 0 :(得分:1)

它只是另一种声明该特定函数的参数数据类型的方法。

答案 1 :(得分:1)

这是在K& R C中声明参数参数的原始(阅读:古代)风格。在ANSI C标准中,您可能熟悉的形式是标准。

另请参阅:What are the major differences between ANSI C and K&R C?

答案 2 :(得分:1)

那是"K&R" C。它已经过时了。

即使您的编译器支持它,也不要使用它。传递给以这种方式定义的函数的参数将经历参数提升,以便每个参数具有相同的大小(通过在最新的C代码中提升varargs的相同机制)。

此类代码也不支持函数声明/原型。永远不要试图改善"这样的代码通过创建函数原型 - 你将打破函数所期望的参数提升。