在 C 中声明变量时,如果你想声明一个int
.
为什么省略显式“int”类型的参数无法在 gcc 中与其他非 int 参数一起编译,除非以 K&R 样式声明?
此代码生成错误:
main(argc, char *argv[])
{
/* . . . */
}
使用以下输出:
$gcc XXX.c -oXXX
XXX.c:X:X: error: expected ‘)’ before ‘char’
main(argc, char *argv[])
^
int
但是,如果我为参数编写 K&R 样式类型,我可以省略为第一个参数指定类型:
main(argc, argv)
char *argv[];
{
/* . . . */
}
这编译得很好。
我怀疑原因是在制定第一个 C 标准时,他们决定 K&R 自动 int 表示法应该与函数参数的新语法完全分开,特别是因为当标准被整合在一起时,自动 int 表示法是可能已经被认为是糟糕的符号。
我对这些规则的兴趣是学术性的,我一般不会写这种老式的 C。