此程序我在DEV-C++和Cfree5上运行,均无误,但是,若将test函数返回值改为void
则在DEV-C++上出现Warning,但是能运行出想要的结果,在Cfree5上会出现error
,但是之前学习的C的书中都说,被调函数置于主调函数之后,是违法的,但是为什么
test函数返回值为int可以无error呢?
# include<stdio.h>
int main()
{
test();
}
int test()
{
printf("this is a test!\n");
return 0;
}
应该是编译器不标准造成的,一般严格来说无论有没有返回值,被调用的函数如果写到主函数后面后要加函数声明的~否则就会报错!
无非两个可能,要么studio.h里面正好也定义了test这个函数,或者有test这个函数指针变量,要么编译器不标准,在标准之外允许先使用后定义。
你之所也改为void报错是因为你的最后一句返回的是一个整型,与你定义的不相符合
还是推荐使用VS系列。。。毕竟标准。。。函数至于main之后,相当于无定义函数。。。
一般情况,函数不显示指定返回值类型,系统会默认为int类型,这个也会跟编译器有关系(但是目前的都没问题),建议使用linux系统进行测试(毕竟标准)