如果我正在编译f90或f95代码,gfortran如何判断?

ily*_*nam 10 fortran gfortran fortran77 fortran90

我明白gfortran可以编译f90或f95吗?它如何知道它正在编译哪一个?还可以编译f77代码吗?ubuntu已经有了fortran编译器,还是需要下载gfortran?

Jon*_*rsi 20

gfortran可以从文件扩展名中猜出某些东西; 如果文件的扩展名为.f,.f90,f95,.f03或.f08,则它将采用适当标准的固定(.f)或自由格式.但你可以强制它使用选项-std = f2003编译(比方说)fortran2003代码.例如,从文档中,

-std=std

指明该方案预计将符合标准,其可以是一个f95,f2003,f2008,f2018,gnu,或legacy.std的默认值是gnu,它指定了包含GNU Fortran支持的所有扩展的最新Fortran标准的超集,尽管警告将针对不建议在新代码中使用的过时扩展.该legacy值是等效的,但没有过时扩展的警告,并且可能对旧的非标准程序有用.在f95,f2003,f2008,和f2018值指定严格遵循的Fortran 95的,的Fortran 2003与Fortran 2008和Fortran 2018标准,分别; 除相关语言标准之外的所有扩展都给出了错误,并且为后来标准中允许但过时的Fortran 77功能提供了警告.-std=f2008ts允许Fortran 2008标准,包括增加技术规范(TS)29113关于Fortran与C和TS 18508在Fortran中的附加并行特性的进一步互操作性.

请注意,除少数例外情况外,fortran标准具有很强的向后兼容性,因此很多"好的",符合标准的fortran-77代码也是有效的fortran 2003代码.与此相关的主要问题是80年代及更早版本的大量代码既不"好"也不符合标准.

  • 可以说服 gfortran .f 文件是 Fortran 95 或更高版本吗?`-std=f95` 是不够的。 (2认同)

M. *_* B. 10

是的,gfortran可以编译FORTRAN 77和Fortran 90,95等.它实现了2003和2008的许多功能.对于Fortran 90/95/2003/2008代码,使用的良好扩展名是.f90.其他一些编译器无法识别.f95,.f2003等.您是否真的想在新标准出现时重命名文件?使用.f或.for for FORTRAN 77.主要区别在于编译器期望的源布局:.f90的自由格式,.f或.for的固定格式.(大写文件类型将导致预处理器运行.)您可以使用-ffixed-form -ffixed-line-length-none选项强制使用固定格式布局.