个人工具

Mix C Fortran

来自Ubuntu中文

Dbzhang800讨论 | 贡献2008年3月25日 (二) 22:30的版本 (新页面: ==Fortran与C混合编程== 由于 GNU 的 Fortran 和 C 语言二者的函数彼此可以直接相互调用,所以混合编程可以非常容易地实现。只要你足够仔细,确...)

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航, 搜索

Fortran与C混合编程

由于 GNU 的 Fortran 和 C 语言二者的函数彼此可以直接相互调用,所以混合编程可以非常容易地实现。只要你足够仔细,确保函数调用时传递的参数类型正确,函数就可以在两种语言间来回调用,就像它们是同一种语言一样。

下表中列出了 Fortran 的数据类型和它们在 C 中对应的类型。这张表在大多数平台下是没问题的,但是或许会有例外的情况发生。在你打算传递某种数据类型时,先编写一个简单的例子进行测试将是很明智的。

C 类型Fortran 类型描述
signed charINTEGER*18位有符号整数
shortINTEGER*216位有符号整数
intINTEGER32位有符号整数
floatREAL32位浮点数
doubleDOUBLE PRECISION64位浮点数
void sub_()SUBROUTINE SUB()无返回值的 C 函数等价于 Fortran 子程序
float fun_()REAL FUNCTION FUN()有返回值的 C 函数等价于 Fortran 的函数


由于 Fortran 总是以引用的方式传递参数,而 C 则始终以地址方式传递数组,因此数组做参数时不需做任何修改。但是对多维数组来说,混合调用时其下标需要翻转,因为 Fortran 的数组是以列为主序(column-major order)而 C 数组以行为主序(row-major order)。

Fortran调用C函数

C调用Fortran函数

其他参考