我确信这个解决方案非常基础,但我很难弄清楚如何在Fortran中使用函数 . 我有以下简单的程序:
PROGRAM main
IMPLICIT NONE
INTEGER :: a,b
a = 3
b = 5
PRINT *,funct(a,b)
END PROGRAM
FUNCTION funct(a,b)
IMPLICIT NONE
INTEGER :: funct
INTEGER :: a,b
funct = a + b
END FUNCTION
我已经尝试了几种变体,包括在FUNCTION之前分配数据类型,将funct的结果分配给主程序中的另一个变量并打印该变量,并将FUNCTION块移到PROGRAM块之上 . 这些都没有奏效 . 使用当前程序,我在第6行(带有PRINT语句的行)上收到错误:
Error: Return type mismatch of function 'funct' (UNKNOWN/INTEGER(4))
Error: Function 'funct' has no IMPLICIT type
从我试过的所有指南中,我似乎做得对;至少有一个变体,或者其中一些变体的组合应该有效 . 如何更改此代码才能使用该功能?
1 回答
简单地将函数放在文件中将不会使主程序可以访问它 .
传统上,您可以简单地将函数声明为
external
,编译器只希望在编译时找到合适的声明 .现代Fortran在“模块”中组织代码和数据 . 但是,为了您的目的,在主程序的范围内“包含”函数更简单,如下所示: