我在VS2010中运行FORTRAN程序时,结果框闪一下就消失了,这个怎么处理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在VS2010中运行FORTRAN程序时,结果框闪一下就消失了,这个怎么处理?相关的知识,希望对你有一定的参考价值。

参考技术A 使用ctrl+F5运行,可以显示结果 参考技术B 请参考常见问题之IVF一闪而过

fcode.cn/guide-32-1.html本回答被提问者采纳
参考技术C 加pause语句

Fortran数组范围检查的运行时检查未触发

我制作了这个小型测试程序,以“证明”在编译前(或者如果您可以分配它们的情况下)未指定向量的大小就无法使用它们。我的观点虽然失败了。我期望本地向量“ num”会失败。在执行程序之前,程序无法知道其大小。大小点头是在执行时从用户读取的。我用以下命令编译:

gfortan -fcheck = all test.f90

执行过程中,“ nod”的值为500000000

gfortran的版本是6.3.0

执行成功,并返回以下答案:

7 9.9000000000000004 9.9000000000000004 500000000

所以我的问题是;为什么编译器在我(未定义的)向量之外编写时不会向我抛出错误?我猜它看到了我的错误并救了我??通过使其可分配?还是我在这里完全错了?

MODULE globaldata
  IMPLICIT NONE
  INTEGER nod
END MODULE globaldata

MODULE modtest
  USE globaldata
  IMPLICIT NONE

CONTAINS
  SUBROUTINE mysubtest(dummy)
    IMPLICIT NONE
    INTEGER :: dummy
    REAL(kind=8) :: num(nod)

    dummy = 7
    num = 9.9d0
    write(*,*) dummy,num(1),num(nod),size(num)

  END SUBROUTINE mysubtest

END MODULE modtest

PROGRAM test
  USE globaldata
  USE modtest
  IMPLICIT NONE
  INTEGER dummy1

  WRITE(*,*)"Give the value of nod:"
  READ(*,*) nod
  CALL mysubtest(dummy1)

END PROGRAM test
答案

当然可以具有显形数组,其大小在编译时未知(使用命名/文字常量)。所谓的自动对象具有此属性。

显形数组可以出现在程序单元的任何规范部分中。实际上,主程序或模块范围内的变量必须具有为常量表达式的大小。但是,对于局部变量,大小表达式可以改为规格表达式。这些不必是常量表达式。

在您的测试用例中,数组nummysubtest的局部变量。 nod是一个模块变量,可以通过主机关联进行访问,因此形成了一个非常有效的规范表达式:num中的数组nod的大小为mysubtest,无论调用子例程时nod的值如何。

以上是关于我在VS2010中运行FORTRAN程序时,结果框闪一下就消失了,这个怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章

vs2010窗体登陆界面运行变成白框怎么回事

怎么在win10安装fortran

从动态库加载Fortran函数:Debug vs Release

在Dev c里运行成功并输出结果的 却在vs2010里不显示结果是为啥?

安装了vs2010和Visual.Fortran.Composer.XE.,但打开vs后就是找不到fortran是怎么回事啊,求解答

更改过电脑时间后 vs2010运行不出正确结果 是啥原因