ある種の「保護された」と言える、Fortran でグローバル変数を持つ方法があるのだろうかと思います。変数のリストを含むモジュール A を考えています。A を使用する他のすべてのモジュールまたはサブルーチンは、その変数を使用できます。変数の値がわかっている場合は、パラメーターを使用して上書きできないようにすることができます。しかし、変数の値を決定するために最初にコードを実行する必要がある場合はどうなるでしょうか? 変更する必要があるため、パラメーターとして指定できませんでした。似たようなことを実行時の特定の時点で行う方法はありますか?
質問する
4953 次
1 に答える
15
PROTECTED
モジュールで属性を使用できます。Fortran 2003 標準で導入されました。モジュール内のプロシージャーは PROTECTED オブジェクトを変更できますが、モジュール内のプロシージャーまたはモジュールを使用するプログラムは変更できません。
例:
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
于 2013-02-22T09:23:29.853 に答える