0

我有一个 Fortran 95 代码,其输出似乎是它不应该成为函数的事物的函数。具体来说,正在发生以下场景:

  • 运行版本 A 的代码;它不起作用(我的意思是,它在编译和运行时起作用,但它没有给出我期望的结果)

  • 使用版本 B 运行代码;有用。版本 B 仅包含对版本 A 的微不足道的修改,例如打印语句或变量数值的微小变化。

  • 运行版本 A 的代码;突然之间,它起作用了。

我认为在初始化之前内存或使用变量存在一些问题,所以我想知道是否有办法用 来检查这类事情gfortran,或者是否有人知道问题可能是什么。我试过gfortran my_program.f95 -Wall - Wextra了,但它只是给了我一堆关于不合格制表符的抱怨。

4

1 回答 1

0

这是前一阵子,但我解决了这个问题,所以我想我不妨发布它。老实说,我不确定这些步骤是否特别修复了它,但它确实有效,所以它们是:

  1. 将所有过程放在模块中(这也有助于组织代码),而不是仅仅“公开”。

  2. 通过 声明所有变量的意图(inout)。这显然对优化和组织很有用,但显然它也与接口有关……不知道那是什么。inoutreal, intent(in) :: foo

就是这样!

于 2013-08-07T15:21:36.100 回答