关于主函数的一个小疑问

为什么主函数为

void main()

时,编译提示出错

[Error] '::main' must return 'int'

,而

int main()

能正常编译。
是编译器的问题还是有什么原因吗?

例如

#include <stdio.h>
void main()
{
    float r,area;
    scanf("%f",&r);    
    area=3.14*r*r;
    printf("area=%f\n",area);
}

main函数返回值都是int类型,标准写法是int,不过也有部分编译器允许你写void,显然你的编译器不允许