lh888916的个人博客分享 http://blog.sciencenet.cn/u/lh888916

博文

[转载]Fortran与C混合编程及相互调用

已有 4112 次阅读 2019-7-15 09:26 |个人分类:Fortran学习|系统分类:科研笔记|文章来源:转载

FortranC的混合编程中经常要实现这样的功能,C调用Fortran中的函数进行数值计算,但是Fortran要将数据计算的进度传回C中以便显示和控制,如何实现此功能呢?


举例如下:

Fortran 代码:

 

[plain] view plain copy

! Callback to a C function with no return value and no arguments 

SUBROUTINE call_sub(fc) BIND(c) 

 

  USE ISO_C_BINDING 

  TYPE (C_FUNPTR),VALUE :: fc 

  PROCEDURE(), POINTER :: f 

  CALL C_F_PROCPOINTER(fc, f) 

  CALL f() 

 

END SUBROUTINE call_sub  

 

 

C代码:

 

[cpp] view plain copy

#include <stdio.h> 

 

void hello(void)  

  printf("Hello\n"); 

// Declaration of Fortran function that will make the callback 

void call_sub(void(*f)(void)); 

int main(void)  

  call_sub(hello); 

}  

 

注意:Fortran

TYPE (C_FUNPTR),VALUE :: fc

VALUE不能省略,因为函数已经是按指针传递了,如果再按reference调用就会出错。


参考:http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/b254204444067956?pli=1




https://blog.sciencenet.cn/blog-3345983-1189544.html

上一篇:国外著名土木工程相关期刊(SCI/EI)
收藏 IP: 157.0.78.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 15:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部