C_F_PROCPOINTER — C를 Fortran 프로시저 포인터로 변환
C_F_PROCPOINTER — C를 Fortran 프로시저 포인터로 변환
C 함수 포인터를 Fortran의 프로시저 포인터로 만들어 호출하고 싶을 때가 있어요. C_F_PROCPOINTER는 C 함수 포인터 CPTR의 대상을 Fortran 프로시저 포인터 FPTR에 할당해요.
본문
CALL C_F_PROCPOINTER(CPTR, FPTR)
설명(Description)
C_F_PROCPOINTER(CPTR, FPTR)는 C 함수 포인터 CPTR의 대상을 Fortran 프로시저 포인터 FPTR에 할당해요.
분류(Class)
서브루틴(Subroutine)
인자(Arguments)
CPTR—C_FUNPTR타입의 스칼라예요.INTENT(IN)이에요.FPTR—cptr와 상호운용 가능한 프로시저 포인터예요.INTENT(OUT)이에요.
예제
program main
use iso_c_binding
implicit none
abstract interface
function func(a)
import :: c_float
real(c_float), intent(in) :: a
real(c_float) :: func
end function
end interface
interface
function getIterFunc() bind(c,name="getIterFunc")
import :: c_funptr
type(c_funptr) :: getIterFunc
end function
end interface
type(c_funptr) :: cfunptr
procedure(func), pointer :: myFunc
cfunptr = getIterFunc()
call c_f_procpointer(cfunptr, myFunc)
end program main
C 함수 getIterFunc가 돌려준 함수 포인터를 추상 인터페이스 func를 따르는 프로시저 포인터 myFunc로 연결해, 이후 Fortran에서 바로 호출할 수 있게 만드는 예제예요.
표준(Standard)
Fortran 2003 이상
같이 보기
C_LOC — 객체의 C 주소 얻기, C_F_POINTER — C를 Fortran 포인터로 변환, C_F_STRPOINTER — C 문자열을 Fortran 문자열 포인터로 변환