Fortran和C的混合语言编程-授课版.ppt
《Fortran和C的混合语言编程-授课版.ppt》由会员分享,可在线阅读,更多相关《Fortran和C的混合语言编程-授课版.ppt(24页珍藏版)》请在三一办公上搜索。
1、第十一章 Fortran和C的混合语言编程,第一节 概述,一.调用约定 命名约定 命名约定是为了解决不同语言对变量名、参数名、过程名和函数名等标识符的不同处理,以及对名称标识符的不同长度限制等的有关规则、协议和约定.参数传递协议 参数传递是指主调函数/例程与被调函数/例程之间的信息传递与交换过程,混合语言编程时需要考虑参数的传递通过值传递还是通过引用传递?被调函数以何种顺序接收所传递给它的参数。,第一节 概述,二、数据类型与例程的等价形式,第一节 概述,二.Fortran和C的混合编程方式,分别编译、独立运行将Fortran和C各自要实现的功能模块源代码在各自的开发平台上编译连接成可执行文件并
2、独立执行,二者的数据通过数据文件交换。这种模式的实现最为简单,容易掌握,但执行效率较低;函数级调用Fortran和C分别编译各自的功能模块源代码,得到各自的目标文件(.obj),然后集成链接这些obj 文件生成一个统一的可执行文件,实现对对方函数的调用,数据交换通过约定接口来实现。这种方法的缺陷是被调用模块一旦被修改,整个软件必须重新进行编译连接。软件的可维护性较差;动态链接库方式将需要被调用的功能模块源代码编译连接成动态连接库,然后通过约定的接口动态使用另外的语言调用该功能模块。这是目前普遍采用的一种方式,动态连接库(DLL)可以包含可执行代码、数据和各种资源,对其修改无需重新编译主调程序,
3、具有较好的移植性和复用性。,第二节 Fortran与C的函数级调用,_stdcall,第二节 Fortran与C的函数级调用,对于Fortran,可在接口块的例程说明或例程头部加入!MS$ATTRIBUTES编译伪指令告知编译器有关调用约定。其中,!MS$与!DEC$等同。对于C语言,要在函数说明前面加上extern关键字说明函数来自外部或供外部使用,extern和函数说明中间加上_cdecl或_stdcall说明调用约定的属性。,第二节 Fortran与C的函数级调用,Fortran调用C的函数时,C的形参必须使用与Fortran实参同类型的指针变量,必须使用extern。,第二节 Fort
4、ran与C的函数级调用,C调用Fortran例程时,C的实参必须传递与Fortran形参同类型变量的地址,必须用extern,一.Fortran调用C语言函数 例程调用约定如果C采用_cdecl方式的调用约定,它对应于Fortran的C约定,C被调用的函数名nAme在其obj文件中保持混合大小写,_nAme的形式出现在obj文件中。Fortran的接口块中必须用如下!MS$ATTRIBUTES编译伪指令说明:!MS$ATTRIBUTES C,ALIAS:_nAme:NAME 对应的C语言源程序中,用如下语句说明函数Sum使用_cdecl属性且用于文件外部:extern int Sum(int*
5、p1,int*p2);或者extern int _cdecl Sum(int*p1,int*p2);,一.Fortran调用C语言函数 例程的调用约定如果C采用_stdcall方式的调用约定,它对应于Fortran的STDCALL约定,C被调用的函数名nAme在其obj文件中保持混合大小写,以_nAmen的形式出现在obj文件中。Fortran的接口块用如下!MS$ATTRIBUTES编译伪指令说明:!MS$ATTRIBUTES STDCALL,ALIAS:_nAmen:NAME 对应的C语言源程序中,用如下语句说明函数Sum使用_stdcall约定且用于文件外部:extern int _st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 混合 语言 编程 授课
链接地址:https://www.31ppt.com/p-6505868.html