C&C++在函数使用上的差异
Rains 2016/4/16 11:22:18
以下测试的GCC编译器是使用ubuntu14.0
VC编译器使用VC++6.0
程序
#include<stdio.h>
int a()
{
printf("I am a.\n");
}
int b(void)
{
printf("I am b.\n");
}
c()
{
printf("I am c \n");
return 0;
}
d(void)
{
printf("I am d\n");
return 1.1;
}
void main()
{
a(1,2,3,65555555);
b();
//b(1);
//b(1,2);
c();
d();
printf("return c = %d\n",c());
printf("return c = %d\n",d());
}
1、在GCC编译器下
1.1.测试C语言函数
当b(); 替换成b(1);后如下图
结论小结:
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数
(3)主函数可以为void
(测试过程中注意更改内容后要保存后再编译)
1.2测试C++函数
1.函数相同
2.无参数函数设置成int型
3.更改主函数为int 但是不添加return
更改a();调用为无参数类型
编译通过
结论小结:
1、c++函数不支持无类型声明的函数,必须显式声明类型
2、a();a(void);都不能带参数
3、主函数不能为void类型
问题
指明函数类型,但是不说明返回值,int char下返回8 原因?
2、在vc++6下
2.1测试c函数
1、vc6下一次编译通过
2、更改b();为b(1); 编译通过
小结:
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同
(3)主函数可以为void
(测试过程中注意更改内容后要保存后再编译)
2.2测试c++
1、一次不通过
warning C4508: 'c' : function should return a value; 'void' return type assumed
warning C4508: 'd' : function should return a value; 'void' return type assumed
error C2660: 'a' : function does not take 4 parameters
2、注释掉不带类型的c(); d();
error C2660: 'a' : function does not take 4 parameters
3、a();调用不带参数
error C4716: 'a' : must return a value
error C4716: 'b' : must return a value
4、在int a(); 后添加返回值 运行成功
小结:
1、C++语言不支持无类型,或者非void但无返回值的函数
2、f(); f(void); 都不支持传参
3、主函数可以为void
总结GCC
C语言
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数
(3)主函数可以为void
C++
1、c++函数不支持无类型声明的函数,必须显式声明类型
2、a();a(void);都不能带参数
3、主函数不能为void类型
总结VC6
C语言
(1)函数可以不带类型,则默认为返回int类型
(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同
(3)主函数可以为void
C++
1、C++语言不支持无类型,或者非void但无返回值的函数
2、f(); f(void); 都不支持传参
3、主函数可以为void
问题?
指明函数类型,但是不说明返回值,int char下返回8 原因?