C main 函数的参数可以任意选.该怎么解决

C main 函数的参数可以任意选.
我一直以为 C main 函数
要么不带参数, 要么带 2 个参数(int , char *[])
不过, 今天用gcc4.6.1 测试, main 自带参数可以任意选.
比如:
C/C++ code

int main(int x)
{
    if (x <= 0)
         return 0;
    printf("hello,world\n");
    main(x - 1);
    return 0;
}


------解决方案--------------------
编译器扩展,但标准只支持两种。多数编译器至少支持三种。
------解决方案--------------------
我的编译器上有警告!
------解决方案--------------------
c规定了 main函数的格式吗?

int main()
{
return main("lz 看这里",1,2,3,"run");
}
这样照旧编译通过.
------解决方案--------------------
其实标准里规定了2个参数argc,argv的
而且最好是这么用,
------解决方案--------------------
int main(int argc, char* const argv[])

是标准。