FORTRAN与C++间数据的访问和交换

三种形式:参数传递、公用数据、模块方式
1.参数传递

 参数的传递有两种方式:传值传递和引用传递。
 FORTRAN缺省约定:引用传递(地址)
 C++缺省约定:传值传递
 在混合编程中必须保证参数传递方法的一致性。
 注意在C++调用FORTRAN的过程中,如要传递字符串,则每个字符变量后应加一整型变量,但在FORTRAN中不能体现。

2.公用数据
   FORTRAN公共区与C++的结构,三种情况:
 a>单参数公共区数据的访问:用FORTRAN中的公共区名,作为C++的变量名。
   FORTRAN:
     COMMON /PI/PI_VALUE
   C++:
     extern “C” float PI;
b>多参数的公共区数据的访问(4字节*n)
 FORTRAN:
 COMMON /DataComm/Dat1,Dat2(2)
 C++:
 extern “ C” struct{
     float Dat1;
     float Dat2[2];
    }DATACOMM;
c>多参数的公共区数据的访问(非4字节*n)
 使用pack(2)指令,可改变C++存储方式,使它与FORTRAN公共区一致。
    FORTRAN:
     CHARACTER*10 ch
 COMMON/Really/ch,x,y,z(6)
 C++:
 #pragma pack(2)
      extern “c” struct{
          char ch[10];
          float x,y,z[6];
      }REALLY;
    #pragma()
注意:在C++中的结构变量名,要大写。

3.使用模块访问数据
 主要是对访问对象的名称问题。
 FORTRAN(例:ModData)
      MODULE ModData
            REAL A(3)
      END MODULE ModData
 USE ModData声明

    C++:
    extern “C” {
      float ModData_mp_A[3];
    };

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值