首页 文章

如何在Fortran中创建函数?

提问于
浏览
1

我确信这个解决方案非常基础,但我很难弄清楚如何在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 回答

  • 2

    简单地将函数放在文件中将不会使主程序可以访问它 .

    传统上,您可以简单地将函数声明为 external ,编译器只希望在编译时找到合适的声明 .

    现代Fortran在“模块”中组织代码和数据 . 但是,为了您的目的,在主程序的范围内“包含”函数更简单,如下所示:

    PROGRAM main
      IMPLICIT NONE
      INTEGER :: a,b
      a = 3
      b = 5
      PRINT *,funct(a,b)
    
    CONTAINS
    
      FUNCTION funct(a,b)
        IMPLICIT NONE
        INTEGER :: funct
        INTEGER :: a,b
    
        funct = a + b
      END FUNCTION funct
    END PROGRAM main
    

相关问题