c语言向无参函数传参的困惑

pbdwadr 2013-10-29 07:40:02
看代码,这段代码用gcc竟然能编译通过,这是为什么?求高手深入分析
int fun()
{
printf("fun\n");
return 888;
}

int main()
{
fun();
fun(1);
fun(1,2);
fun(1,2,3);
return 0;
}



...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhao 2013-10-29
  • 打赏
  • 举报
回复
没有为啥,无参的时候本来就可以传递任意参数的,所以一般推介写为void fun(void),不过C++里面严格匹配了编译是不会通过的
  • 打赏
  • 举报
回复
没有为啥啊 C语言本来就这么规定的。这就是cdecl的优势。
还有多远 2013-10-29
  • 打赏
  • 举报
回复
不仅你说的可以,亲测了一下,连下面的代码在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,看了觉得有用

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧