能否将函数参数类型声明移至函数体内部?
关于函数参数声明风格的差异解答
哦,我完全懂你遇到的这个点!咱们来拆解一下:
为什么那段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
相关产品推荐
相关产品推荐

