关于程序中使用的全局变量/模块变量的警告?

时间:2012-05-09 14:49:50

标签: fortran

我有一个旧的Fortran代码,我正在清理。在这一点上,我想为每个过程得到一个非本地变量的列表:代码使用(滥用)全局变量,我想尽可能多地删除对全局变量的引用。手工完成是一件痛苦的事情,所以我一直在寻找一个编译选项来做到这一点,但我找不到任何东西。有什么指针吗?

谢谢, ÁngeldeVicente

2 个答案:

答案 0 :(得分:2)

我感觉到你的痛苦。可悲的是,几乎所有我都要提供同情,我没有找到我最近使用过的Fortran编译器的选项(几乎所有这些编译器在过去6年左右)都可以识别它们。

Understand for FortranFortran Lint等工具可以提供帮助,但需要花钱;您可以在不付款的情况下下载评估副本。

在没有这些工具的情况下,我通常会:

  1. 注释掉我希望是全局的变量,这通常是指在程序范围内声明或在公共块中传递的变量
  2. 自由地搂着IMPLICIT NONE,无论如何你可能正在做什么。
  3. 让编译器在本地范围内发现未声明的变量。

答案 1 :(得分:2)

首先使用“implicit none”或等效的编译器选项。希望你没有太多未声明的变量。大多数编译器都有一个选项,可以节省您为每个过程添加“隐式无”。如果没有未声明的变量,请转到下一步,否则请声明它们。如果有太多未申报的变量,那你就不走运了。然后在特定的过程中注释掉公共块,包括拉入公共块和模块使用语句的行。查看哪些变量未声明并通过“隐式无”生成警告 - 这将揭示公共块和模块中的哪些变量实际用于该过程。

如果您的模块包含类型声明和变量声明,则可能无效。您可能需要将类型和声明放在单独的模块中,以便您可以使用变量声明注释掉模块。但是旧代码滥用全局变量的可能性不大。

相关问题