我们有一个用 Fortran 90 编写的复杂程序,我只能找到 Fortran 95 编译器。不幸的是,我的访问权限和经验有限,但需要立即了解问题。
使用 Fortran 95 编译器(例如 gfortran)是否可以始终正确编译 Fortran 90 代码?
Fortran 版本是向后兼容的,这可能是一个错误。在 Fortran95 标准中,有一些非常(当之无愧的)晦涩的结构最终被删除:例如,从此页面:
Fortran 95 表示已删除以下 Fortran 90 和 FORTRAN 77 功能:
- ASSIGN 和分配的 GO TO 语句
- PAUSE 语句
- O 控制变量和实数类型的表达式
- H 编辑描述符
- 从 IF 块外部分支到 END IF 语句
但是除非您的代码使用这些(而且不应该),否则您应该可以使用 F95;否则,大多数 F95 编译器仍然有一种模式,您可以使用该模式编译旧代码,例如-std=legacy
gfortran。
Fortran 编译器(IBM 除外)向后兼容。因此,任何有效的 F90 代码都将在 F95 编译器上编译。
IBM 做事不同,它们似乎是向前兼容的。所以xlf
将从 77 开始编译,而将编译xlf90
90/95,等等。
注意,永远是一个强词。这真的取决于你的编译器制造商。但是 GNU Fortran 或 Intel Fortran 目前只有一个编译器可用于所有类型的 Fortran,尽管有时对 F2003/2008 的支持参差不齐。