1. 在Fortran程序中需要给C函数写一个interface,在subroutine XXX后面跟上bind(c, name='YYY')语句,表示XXX这个子程序链接的是C语言中的YYY函数。注意XXX和YYY这两个名字可以毫无关系,且是区分大小写的。本例中Fortran中的名字为calc,而C语言中为calC,两者也是不同的。如果两者名字相同,可以省略name='YY
call cfun1(idim1) write(6,*) 'Exiting the Fortran program' end 图2。 用于调用 C++ 的C包装程序函数 (cfun.C) #include <stdio.h> #include "cplus.h" extern "C" void cfun(int *idim){ printf("%%%Inside C function before creating C++ Object\n"); int i = *idim; junk<int>* jj...
最后,我们使用write语句输出变量c的值。 Fortran中的call语句是一种非常重要的语句,它可以用来调用子程序或函数,实现代码的模块化和重用。在使用call语句时,需要注意参数列表的个数和类型,以及子程序或函数的返回值。熟练掌握call语句的用法,可以提高Fortran程序的编写效率和代码质量。
call XXX(a,b,c,...)XXX是函数名(要在别的地方事先定义) (a,b,c,...)是参数,可缺省 调用子程序,call subroutine。调用一个子程序,用call来调
> date: 2022-10-06programmainusedemoprint*,"从 Fortran 读取 C 本地数组的方式 1:"callinit()! 赋初值 1,2,3print*,'值:',x! 从 Fortran 中访问 bind(c) 数组callprt()! 从 C 例程中访问数组end programmain! 从 Fortran 读取 C 本地数组的方式 1:! 值: 1.0000000000000000 2.0000000000000000 ...
cmd.exe "/K" '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell' 有: PS D:\work\fortran_work\ModernFortran\codes\windows\fortran-call-c\09f> cmd.exe "/K" '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell' :: initializing oneAPI environment... Initia...
print*,"从 Fortran 读取 C 本地数组的方式 2:"callinit2()!赋初值4,5,6callc_f_pointer(x_in_demo2,x2,shape=[3])!从C中访问bind(c)数组 print*,'地址:',x_in_demo2!数组地址,即指针 print*,'值:',x2!将 Fortran 数组指针绑定到C数组地址 ...
call print_matrix(C) print *, "Matrix D = A * B:" call print_matrix(D) contains ! 打印矩阵的子程序 subroutine print_matrix(M) real, intent(in) :: M(n,n) integer :: i, j do i = 1, n do j = 1, n write(*,'(F6.2)', advance="no") M(i,j) ...
import!! Make iso_c_binding and my_struct visible hereendfunctionendinterfaceinteger(C_INT),pointer:: array(:) => NULL()type(my_struct)::xyzinteger::jdoj=1,3 xyz = make_array()callc_f_pointer(xyz%array,array,[xyz%nn])write(*,*)xyz%nnwrite(*,*)arrayenddoendprogram ...
如果例程调用带有霍尔瑞斯常量的子程序,并且调用的子程序要求参数为 INTEGER(或除 CHARACTER 以外的任意类型),请使用 -xhasc=no 编译例程。 示例: demo% cat hasc.f call z(4habcd, ’abcdefg’) end subroutine z(i, s) integer i character *(*) s print *, "string length = ", len(s) return ...