当我尝试使用 ifort 在语句下编译代码时,它返回错误:
error #8169: The specified interface is not declare
但它在 gfortran 上完美运行,出于某种原因,我必须使用 intel 编译器来编译这项工作。我使用的语言是 Fortran。原因是“ifort”编译器看不到接口中的变量。所以我开发了一个名为 Var 的模块来解决这个问题。并在每个块中使用它。但它返回错误:
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