C_FUNLOC (The GNU Fortran Compiler)

### 8.59 `C_FUNLOC` — Obtain the C address of a procedure ¶

Synopsis:

  `RESULT = C_FUNLOC(X)`

Description:

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

Class:

  Inquiry function

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

Standard:

  Fortran 2003 and later

See also:

  `C_ASSOCIATED` — Status of a C pointer,
  `C_LOC` — Obtain the C address of an object,
  `C_F_POINTER` — Convert C into Fortran pointer,
  `C_F_PROCPOINTER` — Convert C into Fortran procedure pointer