Wenn ich versuche, Code unter der Anweisung mit IFORT zu kompilieren, gibt er Fehler als:
error #8169: The specified interface is not declare
Aber es funktioniert perfekt für GFortran, aus irgendeinem Grund muss ich den Intel -Compiler verwenden, um diese Arbeit zu kompilieren. Die Sprache, die ich benutze, ist Forran. Der Grund dafür ist, dass der "Ifort" -Kompiler die Variablen in der Schnittstelle nicht angezeigt. Deshalb entwickle ich ein Modul namens Var, um das zu beheben. Und benutze es in allen Blöcken. Aber es gibt einen Fehler zurück:
This USE statement is not positioned correctly within the scoping unit.
Das VAR -Modul ist wie folgt:
MODULE VAR
CHARACTER(50) :: callbackID
END MODULE
Wie kann ich das Problem beheben, vielen Dank! Meine Compiler -Version ist 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