- 14
- 0
- 约5.25千字
- 约 28页
- 2018-03-07 发布于湖北
- 举报
Fortran混合编程
C/C++调用Fortran例程: 仅仅将Fortran生成的.obj文件添加到项目中还不够,另外还需要将Fortran编译器下的一些静态库包含进来。在安装目录下: ComposerXE-2011\compiler\lib\ia32 Thank you 语言 有返回值调用 无返回值调用 Fortran 函数(Function) 子例程(Subroutine) C/C++ 有返回值的函数 空函数(void) C/C++:除数组外的其他所有非指针参数均采用值传递的方式。 Fortran:除常量、表达式外所有数值型参数均采用引用传递(地址传递)。 源代码 编译预处理 编译 汇编 链接 可执行文件 处理#define,#ifdef,#include等语句,对源代码的改写和扩充 词法、语法分析,将代码翻译成中间代码 将翻译的代码翻译成目标机器码 目标文件彼此链接形成.exe文件 编译 .obj文件 ~~~~~~~~~~ 混合语言编程概述 参数传递协议 命名约定 堆栈管理 定义Fortran中过程的原型 在VIF(XE2011)环境下混合编程 概念:由两种以上语言写成的源代码形成的程序的过程。 混合语言编程综合了不同语言之间的优点,使得编程更加快捷。 Fortran适合科学计算,Visual C++更适合于图形界面编程;两者结合能加快编程开发速度。 这里主要介绍Fortran和C/C++的混合编程问题!! 1、混合编程的难点是解决不同语言之间的通信问题 2、而程序之间的通信是通过例程之间的相互调用实现的。 3、不同语言间的语法规范不同,要正确通信,必须,必须建立统一的约定,即调用约定。 这里的例程是不同语言的函数、过程、子例程的总称 调用约定 参数传递 命名约定 堆栈考虑 参数传递包括以下四个方面, 参数传递顺序:Fortran和C/C++实参和虚参的对应顺序都是从左到右。 参数传递方式:值传递或者地址传递。 参数数目是否可变:是否识别可选参数 参数数据类型:整型,浮点,字符…… √ 参数传递方式由Attributes属性指定,两种方式: 方式一、c,stdcall选项: Subroutine s1(a,b,c) !DEC$ attributes C :: s1 Real(4) a, b,c End subroutine C、stdcall声明过程遵循Windows标准参数传递方式,就是C语言参数传递模式 区别是什么呢…… 方式二,reference,value选项: Subroutine s1(a,b,c) !DEC$ attributes value:: a,b Real(4) a, b,c End subroutine Reference和value选项能单独指定输入参数的传递方式 Reference 指定参数为引用传递,这正是Fortran默认的传值方式 Value指定参数为值传递,这正可以适应C/C++的传值方式 以上讨论的均是在Fortran源程序中作改动,实际上由于C/C++含有指针这一特殊类型,就不需要再对值传递和引用传递另外作声明了。 Subroutine s1(a,b,c) !DEC$ attributes value:: a,b Real(4) a, b,c End subroutine Extern “C”Void _ stacall s1(float a,float b,float * c); C++可以定义参数可选的函数,对于这种情况Fortran如何处理呢? Real(4) function func(x,a,b) !dec$ attributes c,varying :: func !dec$ attributes alias:’_func’::func Real(4) x,a,b End function 由Fortran调用C++程序 extern “C” float func(float x,float a=0,float b=0) { float f; f=a*x*x+b*x*x; return f; } 主程序: Program a1 Write(*,*) func(1.0,3.0) end 结论: 如果Fortran需要调用带有可选参数的C++函数,须在fortran程序中用c,Varying对例程进行声明。 !dec$ attributes c,varying :: 例程名 选项C的作用,在后面堆栈管理约定时详细介绍。 Fortran C/C++ Integer(2) short Integer(4) Int,long Real(4) float Real(8) double Fortran和C/C++对应的数据类型 名称约定包括
您可能关注的文档
- FD-RTE-A型冉绍尔-汤森效应实验仪仪器使用指导.doc
- FBI教你读心术-andy.pptx
- F-T合成新技术.ppt
- fj-第1章 计算机基础知识.ppt
- FLASHMX培训教案.doc
- 2015届中考英语复习课件:第18课时9AUnit2概要.ppt
- F3速锐典型电器系统介绍.ppt
- Flash交互设计-07 AS3.0显示编程.ppt
- 2015届中考英语英语重点知识点复习课件2概要.ppt
- FLASH时钟.doc
- 2025年新外研版三年级上册英语同步教学课件.pptx
- 红十字会大讲堂管理制度.docx
- 技术奇点(Singularity)理论的科学基础、哲学思辨与未来社会构想 _2026年1月.docx
- 公共艺术项目在激活城市消极空间(如高架桥下、废弃铁轨)中的作用 _2026年1月.docx
- “双减”政策对校外培训行业转型及家庭教育投入变化的影响 _2026年1月.docx
- Z世代员工对职场“摸鱼文化”的态度成因与管理对策研究 _2026年1月.docx
- 跨文化团队管理中的沟通障碍、文化冲突与融合策略案例分析 _2026年1月.docx
- 共享经济平台将劳动者归类为“合作伙伴”的伦理与法律责任 _2026年1月.docx
- 大型国际展会(如进博会、CES)的绿色会展实践与可持续发展评估 _2026年1月.docx
- 地理标识产品(如阳澄湖大闸蟹)与产地旅游的融合发展研究 _2026年1月.docx
原创力文档

文档评论(0)