我们是否应该在主程序中声明函数名称和类型?
例如,如果我有一个名为具有此标题recursive function sum(a,b) result(result)
当我尝试编译时,我会遇到一些错误。
Error: Return type mismatch of function 'sum' at (1) (UNKNOWN/INTEGER(4))
Error: Function 'sum' at (1) has no IMPLICIT type
我设法通过在主程序中声明函数来摆脱错误,例如:
integer :: sum
为什么会这样?我们一直都应该这样做吗?
答案 0 :(得分:0)
您应该将程序放在模块和use
模块中。你没有所谓的explicit interface
程序,使用该模块的代码知道程序的描述。
Correct use of modules, subroutines and functions in fortran
当你的功能不在模块中时,你确实必须做你所显示的,即声明
integer :: sum
这样代码知道sum()
返回一个整数。但是它不知道函数采用什么样的参数。在调用sum()
时,编译器无法检查您是否使用了正确的参数数量和类型。
当它在模块中时,编译器可以检查参数,而不必再次声明返回类型。