FORTRAN中如何定义全局变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FORTRAN中如何定义全局变量相关的知识,希望对你有一定的参考价值。
参考技术A 1、局部变量是指在函数内部定义的变量,作用域为定义局部变量的函数,也就是说他只能在定义他的函数中使用,其他函数不能使用该变量.最值得注意的是:只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则变量消失.
2、全局变量则是在整个程序执行的过程中一直有效,除非整个程序退出才会消失.
例子:
option
explicit
dim
x
as
integer
private
sub
form1_load()
x
=
1
end
sub
private
sub
fun()
dim
y
as
integer
x
=
x
+
1
y
=
y
+
1
end
sub
private
sub
command1_click()
call
fun
x
'正确
y
'出错,提示变量没定义
end
sub 参考技术B module变量是模块变量,只要你use这个module就可以对它进行操作了。
用fortran编程,起步时尽量的不要拿C或是C++往里套,否则会越学越迷糊:)
当然,你也可以认为module变量其实就是C/C++中,某个结构体里面的静态变量:)它的作用域是全局的,但需要你带上结构体(module)的名字:) 参考技术C 最好不要定义全局变量,取而代之用Module变量为佳:) 参考技术D 用common 和public均可定义全局变量
OpenMP 的全局变量
【中文标题】OpenMP 的全局变量【英文标题】:Global variable with OpenMP 【发布时间】:2011-01-07 09:26:51 【问题描述】:关于多线程代码的 OpenMP 问题:
线程是否共享所有全局变量?如何将某个全局变量设为主线程私有?
谢谢
PS:这是一个C代码。
【问题讨论】:
什么语言,C 还是 fortran?两种语言的细节有点不同。另外,如果是 fortran,您是否尝试私有公共块? 【参考方案1】:如果我没记错的话
#pragma omp threadprivate
全局变量有点棘手,如果它们必须被初始化,你必须使用 copyfirst 指令(我认为这是正确的名称)。线程私有变量也可能带来重大损失,在某些实现中,变量访问变成了函数调用。
【讨论】:
以上是关于FORTRAN中如何定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章