gpt4 book ai didi

fortran - 属性模块数据实体的 SAVE、PROTECTED 和 PARAMETER 之间的区别

转载 作者:行者123 更新时间:2023-12-02 21:15:47 30 4
gpt4 key购买 nike

如果我想防止模块数据在程序执行过程中被更改,我在Fortran中似乎至少有三个选项:

<强>1。使用SAVE语句

module mymod

implicit none
save

integer :: i = 1

end mymod

<强>2。使用PROTECTED属性

module mymod

implicit none

integer, protected :: i = 1

end mymod

<强>3。使用PARAMETER属性

module mymod

implicit none

integer, parameter :: i = 1

end mymod

这三个选项有什么区别和含义?

最佳答案

这个答案解决了名为 i 的实体的使用的非微妙方面。在更复杂的情况下还需要考虑其他一些因素。它还使用术语“变量定义上下文”。宽松地说,这意味着变量可能出现在其值可能发生变化的位置。这就像成为一项作业的左侧;显示为 do 变量或对应于 intent(out) 参数。

    只要可访问,
  1. i 就可能出现在变量定义上下文中。

  2. i(作为非指针对象),在可访问的情况下,只能出现在其模块或该模块的后代范围内的变量定义上下文中。

  3. i 永远不会出现在变量定义上下文中:它是常量而不是变量。

save 属性(在当前标准中,任何模块变量都具有此属性;甚至第二个示例中的 i 也被保存)不控制修改。

关于fortran - 属性模块数据实体的 SAVE、PROTECTED 和 PARAMETER 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59411031/

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