c_funloc(x)
determines the C address of the argument.
Fortran 2003 and later
result = c_funloc(x)
x
- Interoperable function or pointer to such function.The return value is of type c_funptr
and contains the C address of the argument.
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
c_associated, c_loc, c_f_pointer, c_f_procpointer, iso_c_binding