程序如下:我的qq是 869083616
我的问题是:如何将fortran 的子程序ss传递给fortran程序需要调用的c函数print_a_?
testc.c:[C] 纯文本查看 复制代码
#include <stdio.h>
extern void ss_(int a); //我自己写的传递进来的ss子程序
void print_a_(void* t,int a){
// int b=(int)t;
ss_(a); //调用传递进来的子程序
// printf("ct_=%p\n",t);
printf("ca=%d\n",a);
}
testf.f:[Fortran] 纯文本查看 复制代码
program voi0d
!use ISO_C_BINDING
implicit none
external :: ss
interface
subroutine print_a(s,a) bind(C,name='print_a_') !c程序接口
external :: s
integer a
end subroutine print_a
end interface
integer a
integer*4 pt,loc
!pt = loc(ss)
!s=4
a = 256
call print_a(ss,%VAL(a)) !想将子程序ss传递给c的函数print_a_,但是好像没有传入
!call ss(a)
print *,pt, a
end program
!************************************
! 需要传递的子程序如下:
!************************************
subroutine ss(a) !需要
!use ISO_C_BINDING
implicit none
integer a
a = a + 1
print *,'a=',a
return
!print *,'a= ',a
end subroutine ss |