W3cubDocs

/GNU Fortran 7

9.54 C_F_PROCPOINTER — Convert C into Fortran procedure pointer

Description:

C_F_PROCPOINTER(CPTR, FPTR) Assign the target of the C function pointer CPTR to the Fortran procedure pointer FPTR.

Standard:

Fortran 2003 and later

Class:

Subroutine

Syntax:

CALL C_F_PROCPOINTER(cptr, fptr)

Arguments:
CPTR scalar of the type C_FUNPTR. It is INTENT(IN).
FPTR procedure pointer interoperable with cptr. It is INTENT(OUT).
Example:
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
See also:

C_LOC, C_F_POINTER

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gfortran/C_005fF_005fPROCPOINTER.html