【发布时间】:2018-02-06 12:23:00
【问题描述】:
我确信解决这个问题的方法非常基本,但我很难弄清楚如何在 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
从我尝试过的所有指南来看,我似乎做得对;至少其中一种变体,或其中一些变体的组合应该有效。我需要如何更改此代码才能使用该功能?
【问题讨论】:
-
问题是你使用了
implicit none,而你没有给funct一个声明。您必须添加integer ,external :: funct。 -
谢谢,这和皮埃尔的回答都有效。