使用fortran和c混合编程可以利用一些现有的c和c++的库,减少代码量,提高编程效率。fortran调用c程序需要使用fortran编写程序接口,通常会用到 iso_c_binding这个模块。
以下以绑定linux系统的一个内置c函数usleep为例,说明fortran如何调用c程序
绑定为subroutine
该程序将usleep函数绑定为一个同名的子程序,绑定为subroutine时,subroutine的名称可以直接与c函数的名称一致,不一致时,需要在bind(c,name = )中定义c函数的名称。
注意其中函数wtime中的 system_clock 的rate参数可以为实数了,这是fortran2008的一点改进。
结果
|
|
绑定为function
该程序中将 usleep函数绑定为doSleep函数,名称与原来的c函数不同。
结果
|
|
enumerator
fortran2003中借鉴c语言定义了一种枚举类型,枚举类型是一种整型常数,可以用来定义一组类似的常数类型。
|
|
结果
|
|