fortran类型不匹配调用函数

安齐

我无法弄清楚我的错误是什么,我在问题上进行了搜索,“隐式无”,并将eyery变量声明为我使用的整数,但仍然出现以下错误:

main.f95:37.20:

    e = Collatzf(i)
                1
Error: Return type mismatch of function 'collatzf' at (1) (UNKNOWN/INTEGER(4))
main.f95:37.12:

    e = Collatzf(i)
        1
Error: Function 'collatzf' at (1) has no IMPLICIT type

这是我的代码:

INTEGER FUNCTION Collatzf(n)

    IMPLICIT NONE
    INTEGER :: n, z

    z = 0

    DO WHILE(n /= 1)

        IF (MOD(n, 2) == 0) THEN
            n = n / 2
        ELSE
            n = 3 * n + 1
        END IF

        z = z + 1

    END DO

    Collatzf = z

END FUNCTION Collatzf


PROGRAM ProjectEuler14

    IMPLICIT NONE
    INTEGER :: lsg, e, s, i

    lsg = 0
    e = 0
    s = 0
    i = 2

    DO WHILE(i <= 1000000)

        e = Collatzf(i)

        IF(e > lsg) THEN
            lsg = e
            s = i
        END IF

        i = i + 1

    END DO

    WRITE(*, *) s, i

END PROGRAM ProjectEuler14

谢谢 :)

makeitshort

lanH的答案是正确的。建议的三种解决方案是:

1)“在主程序中提供Collat​​zf类型的声明”,这意味着添加

INTEGER :: Collatzf

PROGRAM ProjectEuler14中变量声明的声明。

2)“为Collat​​zf功能提供接口主体”,这意味着添加

INTERFACE 
   FUNCTION Collatzf (i)
     INTEGER :: Collatzf
     INTEGER, INTENT(IN) :: i
   END FUNCTION Collatzf
END INTERFACE

对“ PROGRAM ProjectEuler14”中变量声明的声明。

3)“使该函数执行模块过程,然后在主程序中使用该模块”,这意味着创建一个新文件,名为(为简单起见)“ functions.f90”:

MODULE functions

CONTAINS

  INTEGER FUNCTION Collatzf(n)

    IMPLICIT NONE
    INTEGER :: n, z

    z = 0

    DO WHILE(n /= 1)

       IF (MOD(n, 2) == 0) THEN
          n = n / 2
       ELSE
          n = 3 * n + 1
       END IF

       z = z + 1

    END DO

    Collatzf = z

  END FUNCTION Collatzf

END MODULE functions

然后首先通过以下方式编译functions.f90:

gfortran -c functions.f90

并将已编译的“功能”模块链接到您的主程序中:

gfortran main.f90 functions.o

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std::move 与内部对象 - 不匹配调用

来自分类Dev

std::sort 与 lambda functin 不匹配调用

来自分类Dev

没有匹配调用的R函数的摘要

来自分类Dev

函数调用导致类型13不匹配

来自分类Dev

Fortran 95中的“错误:函数的返回类型不匹配”

来自分类Dev

Fortran 95中的“错误:函数的返回类型不匹配”

来自分类Dev

在结构内调用Boxed函数时,类型不匹配

来自分类Dev

vba Byref参数类型在调用函数时不匹配

来自分类Dev

在QTP中调用函数时类型不匹配

来自分类Dev

数据类型在函数调用中不匹配

来自分类Dev

在结构内调用Boxed函数时,类型不匹配

来自分类Dev

C++ 错误:不匹配调用 '(std::list<int>) (int&)'

来自分类Dev

不匹配调用 '(std::vector<std::vector<int> >) (int, std::vector<int>)'

来自分类Dev

使用正则表达式匹配调用者函数

来自分类Dev

使用正则表达式匹配调用方函数

来自分类Dev

Fortran错误:两个不相关的子例程调用之间的类型不匹配

来自分类Dev

从正在调用的函数调用函数时,VBA byref参数类型不匹配

来自分类Dev

函数类型与函数定义不匹配

来自分类Dev

没有匹配调用struct sockaddr_in

来自分类Dev

使用键匹配调用XSLT模板递归

来自分类Dev

调用WinApi GetVersionExA函数时出错:错误A2114 INVOKE参数类型不匹配:参数:1

来自分类Dev

Haskell:函数组合的类型不匹配

来自分类Dev

重载函数的地址与所需类型不匹配

来自分类Dev

函数“递归返回”的“类型不匹配”

来自分类Dev

VBA函数结果类型不匹配

来自分类Dev

Haskell函数中的类型不匹配

来自分类Dev

从函数返回数组时类型不匹配

来自分类Dev

Scala 中的类型不匹配(hasNext 函数)

来自分类Dev

Kotlin - 高阶函数和类型不匹配

Related 相关文章

热门标签

归档