gpt4 book ai didi

interface - Ifort 编译器无法识别 Fortran 中的接口(interface)

转载 作者:行者123 更新时间:2023-12-04 04:35:14 27 4
gpt4 key购买 nike

当我尝试使用 ifort 在语句下编译代码时,它返回错误:

    error #8169: The specified interface is not declare

但它在 gfortran 上完美运行,出于某种原因,我必须使用 intel 编译器来编译这项工作。我使用的语言是 Fortran。原因是“ifort”编译器看不到接口(interface)中的变量。所以我开发了一个名为 Var 的模块来解决这个问题。并在每个 block 中使用它。但它返回错误:
This USE statement is not positioned correctly within the scoping unit.

var 模块如下所示:
MODULE VAR
CHARACTER(50) :: callbackID
END MODULE

我该如何解决这个问题非常感谢!我的编译器版本是 ifort 12.1.0
      MODULE DEMO
USE VAR
INTERFACE
SUBROUTINE callback_prototype(callbackID)
USE VAR
CHARACTER(*) :: callbackID
END SUBROUTINE callback_prototype
END INTERFACE

PROCEDURE( callback_prototype ), POINTER :: f_ptr => NULL()

CONTAINS
SUBROUTINE set_callback(func)
IMPLICIT NONE
EXTERNAL :: func

f_ptr => func
call HELLO
END SUBROUTINE

SUBROUTINE invoke_callback(callbackID)
CHARACTER(*) :: callbackID
if (associated(f_ptr)) call f_ptr(callbackID)
END SUBROUTINE

SUBROUTINE HELLO

IMPLICIT NONE

!dosomthing


END SUBROUTINE
END MODULE

最佳答案

提供的代码不是合法的 fortran。接口(interface)主体内的 use 语句使可访问的名称与虚拟参数相同。这违反了语言的范围规则。

接口(interface)主体内的 use 语句似乎是多余的。

关于interface - Ifort 编译器无法识别 Fortran 中的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com