【发布时间】:2015-06-07 01:06:07
【问题描述】:
如果C代码中出现主函数声明后的两行之类的东西是什么意思?
int main(argc,argv)
int argc;
char *argv[];
{
// main function body
}
我以前从未见过这样的事情。代码工作得很好,但我很想知道这意味着什么。谢谢!
【问题讨论】:
-
那已经过时了K&R syntax
标签: c
如果C代码中出现主函数声明后的两行之类的东西是什么意思?
int main(argc,argv)
int argc;
char *argv[];
{
// main function body
}
我以前从未见过这样的事情。代码工作得很好,但我很想知道这意味着什么。谢谢!
【问题讨论】:
标签: c
这是在 K&R C 中声明参数参数的原始(阅读:古老)风格。在 ANSI C 标准中,您可能熟悉的形式就是标准。
另请参阅:What are the major differences between ANSI C and K&R C?
【讨论】:
这只是声明该特定函数的参数数据类型的另一种方式。
【讨论】:
那是"K&R" C。它已经过时了。
不要使用它,即使你的编译器支持它。传递给以这种方式定义的函数的参数将经过参数提升,以便每个参数具有相同的大小(通过在最新 C 代码中提升可变参数的相同机制)。
此类代码也不支持函数声明/原型。并且永远不要试图通过创建函数原型来“改进”这样的代码——你会破坏函数所期望的参数提升。
【讨论】: