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

能否将函数参数类型声明移至函数体内部?

关于函数参数声明风格的差异解答

哦,我完全懂你遇到的这个点!咱们来拆解一下:

为什么那段C代码无法编译?

你提到的这段代码:

void t(m) {int m;}

这是旧式K&R风格的C函数定义,在C99及之后的现代标准里已经被正式废弃了,现在主流编译器默认都会报错。现代C要求参数的类型声明必须直接写在函数的参数列表里,正确的写法应该是:

void t(int m) {
    // 函数体逻辑
}

少数编译器可能在开启兼容模式时允许旧式写法,但这种写法既不规范也不利于代码可读性,不推荐使用。

Fortran的参数声明风格

而Fortran确实天生支持这种“先列参数名,再单独声明类型”的写法,这是Fortran的传统写法之一,不管是旧标准还是最新的Fortran标准都完全兼容。比如典型的Fortran子程序写法:

subroutine t(m)
    integer m  ! 在这里声明参数类型
    ! 子程序逻辑代码
end subroutine t

甚至很多遗留的Fortran项目里,这种写法还是主流,完全不用担心编译问题。

如果之后你在两种语言切换时有类似的语法疑惑,随时留意它们的标准差异就好啦!

内容的提问来源于stack exchange,提问作者Youjun Hu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:37:33