C语言和Fortran混合编程结构体传递参数
来源:互联网 发布:四川网络作家协会 编辑:程序博客网 时间:2024/04/30 07:44
本人使用C语言时间比较长,对Fortran了解一点,不是很深,最近在做研究时突然用到了一个Fortran编写的程序,但是里边的代码并不适合自己的研究目的,由于代码很凌乱,加上自己也不熟悉那块理论基础,就打消了用C语言重写的念头,故而换一种思路,将C和Fortran混合编程,把程序变得适合自己的研究。
我用的是Ubuntu系统,在GUN的框架下混合编程还是很好实现的,按照这个博客的方法,我很快掌握了混合编程的要领,但是我所要传递的参数实在太多,于是我想到把所有数据封装成一个结构体,通过结构体传递。
在整个过程中,我的结构体只有整数和浮点数,都是32位,因此结构体大小是能保证一致的(如果有朋友和我的不一样,请确定你的结构体所占字节是否相同,避免错误,博客中有说明),例子如下:
C语言代码:
#include <string.h>struct test{ int n; float m;};/* c2fortran.c */int main(int argc,char *argv[]){ struct test t; t.n=90; t.m=0.003; int i; float e = 2.71828; char hello[32]; int length = sizeof(hello); strcpy(hello,"Hello Fortran from C"); for(i=strlen(hello); i<length; i++) hello[i] = ' '; showhie_(hello,&length,&e,&t); return(0);}
Fortran代码:
C showhie.fC SUBROUTINE SHOWHIE(HELLO,LENGTH,E,T) CHARACTER*(*) HELLO INTEGER LENGTH REAL E TYPE TEST INTEGER N REAL M END TYPE TYPE (TEST) :: TC WRITE(*,100) HELLO(1:LENGTH),LENGTH,E,T%N,T%M 100 FORMAT(3X,A,2X,I3,4X,F7.5,2X,I3,2X,F7.5) RETURN END SUBROUTINE SHOWHIE
Makefile文件:
fortran2c : c2fortran.o showhie.ogfortran c2fortran.o showhie.o -o c2fortranshowhie.o : showhie.fgfortran -c showhie.f -o showhie.oc2fortran.o : c2fortran.cgcc -c c2fortran.c -o c2fortran.oclean : rm *.o
0 0
- C语言和Fortran混合编程结构体传递参数
- Linux0.11内核--汇编和C语言混合编程之参数传递
- Fortran与C语言混合编程中的文件处理
- FORTRAN/C/C++混合编程
- ARM中C和汇编混合编程中的参数传递
- ARM中C和汇编混合编程中的参数传递
- DELPHI和FORTRAN语言的混合编程(二)
- FORTRAN和C#混合编程
- <C语言>结构体的参数传递和指针传递(注释详解)
- Delphi 与 FORTRAN语言的混合编程
- Delphi 与 FORTRAN语言的混合编程
- matlab和c++混合编程---Mex结构和mexFunction参数传递
- Fortran与C的混合编程
- windows下intel C/Fortran 混合编程
- windows下intel C/Fortran 混合编程
- FORTRAN/C/C++混合编程注意事项
- C#和Fortran的混合编程
- Fortran与C混合编程,C调用Fortran函数,Fortran再回调C中的函数
- 开启一段生命的路程——博客开写了!
- 关于bootstrap datetimepicker的用法以及小箭头消失的问题(已解决)
- bLue的除法算术题 数学
- leetcode(41).165. Compare Version Numbers
- Android中dp,px,sp概念梳理以及如何做到屏幕适配
- C语言和Fortran混合编程结构体传递参数
- html基础加强2
- LinearLayout中动态添加Fragment不能填充整个Activity的问题
- Maven学习 (二) Eclipse 上安装 Maven3插件
- C#中的程序集和命名空间
- 澄清P问题、NP问题、NPC问题的概念
- 简述类的封装的定义、具体步骤和好处
- laravel session的使用
- 折半查找的递归算法和非递归