Fortran Coder

查看: 2187|回复: 6
打印 上一主题 下一主题

[子程序] 变量当成数组访问,不清楚是什么用法

[复制链接]

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
跳转到指定楼层
楼主
发表于 2023-4-27 10:02:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
REAL  ::                                                        &
            cpmcal, xlcal, diffus,                                &
            viscos, xka, venfac, conden, diffac,                  &
            x


可以看到这里 cpmcal 和 x 都是浮点类型的变量,但是后续代码中出现

[Fortran] 纯文本查看 复制代码
cpmcal(x) = cpd*(1.-max(x,qmin))+max(x,qmin)*cpv


这里 cpmcal(x) 表示将 cpmcal 当成数组来访问,并且 x 作为下标吗?

我尝试在工程中查找cpmcal,发现有如下宏定义:

[C] 纯文本查看 复制代码
#define CPMCAL(x) (cpd*(1.-max(x,qmin))+max(x,qmin)*cpv)


但是感觉也不能很好解释为什么宏定义接受一个赋值。

我是Fortran语言的新手,Google也没有找到非常合适的回答。如果还需要更多细节,请随时和我联系
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2023-4-27 10:38:57 | 只看该作者
老代码可能把数据类型和数组属性分开定义
[Fortran] 纯文本查看 复制代码
program Test
implicit none
real a
dimension a(3)
a = [1,2,3]
print*,a
end program

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
板凳
 楼主| 发表于 2023-4-27 10:52:00 | 只看该作者
本帖最后由 Zhang_kg 于 2023-4-27 10:54 编辑
li913 发表于 2023-4-27 10:38
老代码可能把数据类型和数组属性分开定义
[mw_shl_code=fortran,true]program Test
implicit none


我感觉可能不是这个问题,因为定义和使用中间似乎没有定义数组的属性

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
地板
发表于 2023-4-27 17:14:46 | 只看该作者
那得看完整代码才能知道准确情况。

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
5#
 楼主| 发表于 2023-4-27 19:15:46 | 只看该作者
li913 发表于 2023-4-27 17:14
那得看完整代码才能知道准确情况。

但是涉及cpmcal 和 x似乎只有这两个地方,还有一个是

[Fortran] 纯文本查看 复制代码
#define CPMCAL(x) (cpd*(1.-max(x,qmin))+max(x,qmin)*cpv)


还有可能是什么情况嘛

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

6#
发表于 2023-4-27 19:32:06 | 只看该作者
这是一个古老古老的语法叫做 语句函数,就是用一句话定义一个只在当前作用域生效的函数


4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
7#
 楼主| 发表于 2023-4-27 19:58:41 | 只看该作者
Transpose 发表于 2023-4-27 19:32
这是一个古老古老的语法叫做 语句函数,就是用一句话定义一个只在当前作用域生效的函数

哇,感觉可能是这个语法
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-30 22:45

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表