You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言函数定义中是否可以省略void参数?

现代C语言中无参数函数定义的差异

你提到的这两种函数定义并不等价,具体区别要结合C标准的演变来看:

  • 标准规范写法:int fx(void){}
    这种写法明确告知编译器,该函数不接受任何参数。如果调用时传入参数,编译器会直接抛出错误,这是C99及之后现代C标准规定的合规写法,能有效避免参数传递的潜在问题。

  • 旧式兼容写法:int fx(){}
    这种写法在C89标准中确实和int fx(void){}等价,表示无参数;但在C99及之后的现代C里,它被标记为过时特性,含义变为“函数的参数列表未声明”——也就是说,编译器不会检查调用该函数时传入的参数数量和类型,哪怕传多个参数进去也不会报错,但这会导致程序出现未定义行为。

很多老代码里省略void,只是延续了C89时代的写法,在现代C开发中,建议始终使用int fx(void){}这种明确的写法,避免兼容性问题和潜在bug。

内容的提问来源于stack exchange,提问作者alessio solari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:39:51