ifort を使用してステートメントの下でコードをコンパイルしようとすると、次のようなエラーが返されます。
error #8169: The specified interface is not declare
しかし、gfortran では完全に動作します。何らかの理由で、インテル コンパイラを使用してこの作業をコンパイルする必要があります。私が使用している言語は Fortran です。これは、'ifort' コンパイラが Interface の変数を認識しないためです。そこで、それを修正するために 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