The GNU Fortran Compiler: C_F_PROCPOINTER

Next: C_FUNLOC, Previous: C_F_POINTER, Up: Intrinsic Procedures [Contents][Index]

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