Fortran与C语言的互操作性及标识符作用域详解
1. Fortran与C变量声明及链接
在Fortran与C的交互中,变量声明有一定的规则。Fortran声明需位于模块的规范部分,而C声明要在任何函数之外。并且Fortran声明会初始化变量,C声明则不能。
对于混合大小写或大写名称的C变量链接,需要在BIND属性中使用NAME说明符显式指定名称,示例如下:
real(c_double), bind(c,name='ElapsedTime') :: ElapsedTime
double ElapsedTime;
即便Fortran变量声明使用了与C声明相同的混合大小写,Fortran声明中的大小写并不重要。若没有显式的NAME说明符,Fortran变量的绑定标签将全部为小写。
也可以使用公共块而非模块变量来实现与该C变量的链接,Fortran中公共块的声明可能如下:
common /ElapsedTime/ ElapsedTime
real(c_double) :: ElapsedTime
bind(c,name='ElapsedTime') :: /ElapsedTime/
在这个例子中,公共块中单个变量的名称与公共块名称相同。虽然允许公共块和变量名称重复,但并非必需。这种情况有时被认为风格不佳,但在公共块只有单个变量时较为常见。默认绑定标签来自公共块名称
超级会员免费看
订阅专栏 解锁全文
80

被折叠的 条评论
为什么被折叠?



