今天阅读代码时第一次碰到形如:
#include <stdio.h>
void main()
{
printf("%d\n", add(2,3));
getchar();
}
int add(a, b)
int a;int b;
{
return a+b;
}
这里定义函数add时,参数列表中没有指明形参a、b的类型,反而在 int add(a, b)之后补充说明了int a;int b;
试了下,还可以这么写:
#include <stdio.h>
void main()
{
printf("%d\n", add(2,3));
getchar();
}
int add(a, b)int a,b;
{
return a+b;
}
还有更犀利的,定义add时前面的返回值都可以不要:
#include <stdio.h>
void main()
{
printf("%d\n", add(2,3));
getchar();
}
add(a, b)
int a;int b;
{
return a+b;
}
很有意思>_<。网上查了下说这是一种早期版本的C 语法,ANSI C 已不推荐使用。
上面代码在VS2010中都能编译通过,并且正常运行。
本文介绍了早期C语言中的一种特殊函数声明方式,即在函数定义时省略参数类型并在后面补充说明,甚至可以省略返回值类型。这种语法在ANSI C标准中已被废弃,但在某些旧版编译器中仍能编译通过。
1万+

被折叠的 条评论
为什么被折叠?



