FORTRAN调用C中函数获得平台上某个变量地址,如 F_ogd_pointer=GETVAR("testvar")
这个地址要指定给FORTRAN中某个变量,现在用的是:
integer*4 :: F_ogd
pointer(F_ogd_pointer,F_ogd)
我也不知道pointer用法怎么来的,但IVF认。
现在的问题是在C中testvar变量地址是3101D675,FORTRAN中F_ogd_pointer打印出的值是822204021,转为了10进制。
平台testvar=10,但F_ogd=0,地址这块没对上?
代码
[Fortran] 纯文本查看 复制代码 subroutine F_TEST1
integer :: x=5,y=5,i=0
real*4 ::z
integer*4 :: F_ogd
pointer(F_ogd_pointer,F_ogd)
INTERFACE
integer*4 FUNCTION GETVAR(VarName) BIND(C,NAME="getvar_fun")
USE,INTRINSIC :: ISO_C_BINDING
CHARACTER(KIND=C_CHAR),DIMENSION(*)::VarName
END FUNCTION GETVAR
END INTERFACE
F_ogd_pointer=GETVAR("testvar")
! F_ogd=5
! z=LOC(F_ogd)
WRITE (*,*) F_ogd
! WRITE (*,*) z
WRITE (*,*) F_ogd_pointer
end |