我有一个旧的Fortran代码,我正在清理。在这一点上,我想为每个过程得到一个非本地变量的列表:代码使用(滥用)全局变量,我想尽可能多地删除对全局变量的引用。手工完成是一件痛苦的事情,所以我一直在寻找一个编译选项来做到这一点,但我找不到任何东西。有什么指针吗?
谢谢, ÁngeldeVicente
答案 0 :(得分:2)
我感觉到你的痛苦。可悲的是,几乎所有我都要提供同情,我没有找到我最近使用过的Fortran编译器的选项(几乎所有这些编译器在过去6年左右)都可以识别它们。
Understand for Fortran或Fortran Lint等工具可以提供帮助,但需要花钱;您可以在不付款的情况下下载评估副本。
在没有这些工具的情况下,我通常会:
IMPLICIT NONE
,无论如何你可能正在做什么。答案 1 :(得分:2)
首先使用“implicit none”或等效的编译器选项。希望你没有太多未声明的变量。大多数编译器都有一个选项,可以节省您为每个过程添加“隐式无”。如果没有未声明的变量,请转到下一步,否则请声明它们。如果有太多未申报的变量,那你就不走运了。然后在特定的过程中注释掉公共块,包括拉入公共块和模块使用语句的行。查看哪些变量未声明并通过“隐式无”生成警告 - 这将揭示公共块和模块中的哪些变量实际用于该过程。
如果您的模块包含类型声明和变量声明,则可能无效。您可能需要将类型和声明放在单独的模块中,以便您可以使用变量声明注释掉模块。但是旧代码滥用全局变量的可能性不大。