24小时热门版块排行榜    

查看: 157  |  回复: 2
当前主题已经存档。

jxhgwy

金虫 (正式写手)

[交流] [求助]子程序

借助于别人的库文件中的子程序,结果其子程序中的虚参为数组,我的主程序中的参数为动态分配的指针,这样实参和虚参之间类型不匹配,那么我应该如何调用该子程序呢?
谢谢!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★
jxhgwy(金币+2,VIP+0):谢谢建议,可能金币给的不多,抱歉。当初定的少了,现在不好分配 3-21 11:19
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来仿真编程版 4-30 11:35
不知道你具体是什么情况,呵呵,最好是能贴出来一部分。
这个例子是假设你的主程序的数组是动态二维数组,子程序也是二维数组。
我的建议:
通过构造一个一维数组,传递数据。
2楼2009-03-20 15:21:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jxhgwy

金虫 (正式写手)

★ ★
sunxiao(金币+2,VIP+0):鼓励一下 4-30 11:35
引用回帖:
Originally posted by maomao1210 at 2009-3-20 15:21:
不知道你具体是什么情况,呵呵,最好是能贴出来一部分。
这个例子是假设你的主程序的数组是动态二维数组,子程序也是二维数组。
我的建议:
通过构造一个一维数组,传递数据。

谢谢!这也是一个方法。我曾考虑,但似乎不太好操作。

具体情况是:
我想要将3维场变量记录为TECPLOT文件,所以需要调用TECDAT111

      INTEGER(4) FUNCTION tecdat111 &
       (N, &
        FieldData, &
        IsDouble)
        !MS$ATTRIBUTES STDCALL :: tecdat111
        !MS$ATTRIBUTES REFERENCE :: N,FieldData,IsDouble
        INTEGER(4)  N
        REAL(4)     FieldData(*)
        INTEGER(4)  IsDouble
      END FUNCTION tecdat111

我的场变量如温度、密度等都是用的ALLOCATABLE POINTER 来表示的,因为变量的维数大小无法事先确定。似乎动态数组又不能在主程序中出现。所以我的指针变量代入到上述函数的 FIELDDATA 时总是出现 ‘ Error: The type of the actual argument differs from the type of the dummy argument.  ‘  的错误。

不知道哪位做过TECPLOT 格式的二进制数据输出,请提供一些好的建议,谢谢!
3楼2009-03-21 11:16:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jxhgwy 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见