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