[C] 纯文本查看 复制代码 #include <stdio.h>
typedef int(*pSSptr) (int *a);
void print_a_( pSSptr ss_ ,int *a ){
ss_( a ); //调用传递进来的子程序
printf( "ca=%d\n" , *a );
}
[Fortran] 纯文本查看 复制代码 Program voi0d
use ISO_C_BINDING
implicit none
external :: ss
interface
subroutine print_a(s,a) bind(C,name='print_a_')
import
type(C_FUNPTR) , value :: s
type(C_PTR) , value :: a
end subroutine print_a
end interface
integer , target :: a = 256
call print_a( c_funloc(ss) , c_loc(a) )
print * , a
End Program voi0d
!************************************
! 需要传递的子程序如下:
!************************************
subroutine ss(a) Bind( c )
implicit none
integer a
a = a + 1
print *,'a=',a
end subroutine ss
|