c语言向无参函数传参的困惑
看代码,这段代码用gcc竟然能编译通过,这是为什么?求高手深入分析
int fun()
{
printf("fun\n");
return 888;
}
int main()
{
fun();
fun(1);
fun(1,2);
fun(1,2,3);
return 0;
}
[解决办法]
不仅你说的可以,亲测了一下,连下面的代码在C里也可以运行的说
typedef int (*pFun)();
int fun(int a)
{
return a;
}
int main()
{
pFun intFun = &fun;
printf("%d\n", intFun(10));
return 0;
}
帮你google了一下,http://blog.csdn.net/ylgrgyq/article/details/6940602,看了觉得有用
[解决办法]
没有为啥啊 C语言本来就这么规定的。这就是cdecl的优势。
[解决办法]
没有为啥,无参的时候本来就可以传递任意参数的,所以一般推介写为void fun(void),不过C++里面严格匹配了编译是不会通过的