gpt4 book ai didi

makefile - Fortran 中的条件参数声明

转载 作者:行者123 更新时间:2023-12-03 08:01:20 27 4
gpt4 key购买 nike

我正在寻找有关如何实现“条件”参数声明的想法。问题本质上是,我有一个项目,其中参数在单独的模块中声明,并且主程序和项目中的所有其他模块加载参数模块。问题是我希望能够使用两组不同的参数值来运行同一个项目,而不必过多修改程序和相关文件(此时会花费太多时间)。

我当前的程序只有一组参数,如下所示。首先是主程序:

program main

use myparams
implicit none

! Execute program, call modules, etc...
print *, 'Value for x =', x

end program main

然后是一个带有参数的模块:

module myparams

implicit none
integer,parameter :: set = 1
real,parameter :: x = 2.0

end module myparams

本质上,例如,每当编译 set = 2 的情况时,我都希望有 x = 3.0 。当然,我知道我不能在变量声明 block 中使用条件,所以我正在寻找替代方案。也许在编译时?在 Makefile 中?

我有两个独立的项目(不同的文件夹,因此有重复的源文件),其中一个 x = 2.0 ,另一个其中 x = 3.0,但任何更改在程序的其他部分需要来回更新两个项目中的相同代码......所以不理想。

最佳答案

使用基本内在函数,常量表达式的计算可以有条件地依赖于另一个常量的值。

表达式值选择的一个流行选择是 MERGE 函数,但其​​他计算也是可能的:

  implicit none

integer, parameter :: set = 2
real, parameter :: x = MERGE(3., 2., set==2)
real, parameter :: y = x - COUNT([set==2])

print '(F2.0)', x, y

end program

关于makefile - Fortran 中的条件参数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74063971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com