C语言主调函数与被调函数 奇怪 现象

此程序我在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系统进行测试(毕竟标准)