The GNU Fortran Compiler: C_FUNLOC

Next: C_LOC, Previous: C_F_PROCPOINTER, Up: Intrinsic Procedures [Contents][Index]

### 8.42 `C_FUNLOC` — Obtain the C address of a procedure

Description:

  `C_FUNLOC(x)` determines the C address of the argument.

Standard:

  Fortran 2003 and later

Class:

  Inquiry function

Syntax:

  `RESULT = C_FUNLOC(x)`

Arguments:

  x | Interoperable function or pointer to such function.

Return value:

  The return value is of type `C_FUNPTR` and contains the C address of the argument.

Example:

      module x
        use iso_c_binding
        implicit none
      contains
        subroutine sub(a) bind(c)
          real(c_float) :: a
          a = sqrt(a)+5.0
        end subroutine sub
      end module x
      program main
        use iso_c_binding
        use x
        implicit none
        interface
          subroutine my_routine(p) bind(c,name='myC_func')
            import :: c_funptr
            type(c_funptr), intent(in) :: p
          end subroutine
        end interface
        call my_routine(c_funloc(sub))
      end program main

See also:

  C_ASSOCIATED, C_LOC, C_F_POINTER, C_F_PROCPOINTER