Next: C_FUNLOC, Previous: C_F_POINTER, Up: Intrinsic Procedures

### 8.41 `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