电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C++Fortran混合编程

C++Fortran混合编程_第1页
1/30
C++Fortran混合编程_第2页
2/30
C++Fortran混合编程_第3页
3/30
C/C++/Fortran 混合编程浅谈(一)直接链接方式 现今流行很多编程语言,在编译型语言中,C/C++/Fortran 语言应用非常广泛,C 以其效率高效底层操作为著称,C++以其很好的面向对象类框架泛型编程为特点,Fortran 则以现世存有大量的计算程序而占有重要的位置,在编程中,集合他们三者的长处是个很好的做法。混合编程有很多方法,以下介绍一下基本方法。 对于各个编译器,如果编译中间的二进制文件.o 或.obj 的结构相同,则可以直接链接混合编程。 遵循约定:C/C++默认传值,Fortran 传址。 一、相同编译器家族 以gcc 家族为例,类似的还有Intel C Compiler 和 Intel Fortran Compiler 等。 1、C 和 Fortran (1)C 调用Fortran main.c #include void sub_fortran_(int *,float *,double *); double function_fortran_(double *); int main() { int num_int; float num_float; double num_double; double num; num_int=3; num_float=5.0; sub_fortran_(&num_int,&num_float,&num_double); num=function_fortran_(&num_double); printf("num_int=%d\nnum_float=%f\nnum_double=%f\nnum=%f",num_int,num_float,num_double,num); return 0; } sub.f90 subroutine Sub_Fortran(NumInt,NumFloat,NumDouble) implicit none integer :: NumInt real :: NumFloat real(8) :: NumDouble NumDouble=NumFloat**NumInt end subroutine real(8) function Function_Fortran(NumDouble) implicit none real(8) :: NumDouble Function_Fortran=sqrt(NumDouble) end function sub.f90(F2003 方式) subroutine Sub_Fortran(NumInt,NumFloat,NumDouble) use ISO_C_BINDING implicit none integer(c_int) :: NumInt real(c_float) :: NumFloat real(c_double) :: NumDouble NumDouble=NumFloat**NumInt end subroutine real(c_double) function Function_Fortran(NumDouble) use ISO_C_BINDING implicit none real(c_double) :: NumDouble Function_Fortran=sqrt(NumDouble) end function 链接方法 gcc –o main.o –c main.c gfortran –o sub.o –c sub.f90 gcc –o main.exe main.o sub.o 或者直接 gcc –o main.exe main.c sub.f90 输出 (2)Fortran 调用 C main.f90 program main implicit none in...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C++Fortran混合编程

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部