首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Fortran中受保护的全局变量

Fortran中受保护的全局变量
EN

Stack Overflow用户
提问于 2013-02-22 17:09:13
回答 1查看 4.9K关注 0票数 7

我想知道在Fortran中是否有一种方法来拥有一个全局变量,它可以被声明为某种“保护”。我正在考虑一个包含变量列表的模块A。其他使用A的模块或子例程都可以使用它的变量。如果你知道变量的值是什么,你可以使用参数来实现它不能被覆盖。但是,如果您必须先运行代码来确定变量的值,该怎么办呢?您不能将其声明为参数,因为您需要更改它。有没有一种方法可以在运行时在特定的时间点做类似的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 17:23:30

您可以在模块中使用PROTECTED属性。它是在Fortran 2003标准中引入的。模块中的过程可以更改受保护的对象,但不能更改模块中的过程或使用模块的程序。

示例:

代码语言:javascript
运行
复制
module m_test
    integer, protected :: a
    contains
        subroutine init(val)
            integer val            
            a = val
        end subroutine
end module m_test

program test
    use m_test

    call init(5)
    print *, a
    ! if you uncomment these lines, the compiler should flag an error
    !a = 10
    !print *, a
    call init(10)
    print *, a
end program  
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15020460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档