如何将Fortran 90与.for文件扩展名一起使用gfortran?

Ubuntu(16.04)中安装Gfortran后,指向f95。 我在gfortran手册中看到-std选项可以给出f95和forward。 我从手册中看到的默认-std选项值是“gnu”。 如果我使用f95代码,我不确定编译内部的影响。

如何将gfortran用于扩展名为.for的Fortran 90文件? 虽然Fortran 95可能(不确定)编译Fortran 90,但我不想将Fortran 95编译器用于Fortran 90代码。

Fortran 90已经死了。 它具有严重的缺陷,特别是在可分配的情况下,Fortran 95确定了这个缺陷。例如,它允许存在未定义的分配ststus。

很多时候有人说他正在使用Fortran 90,实际上他正在使用别的东西。

Fortran 90和Fortran 95非常接近,甚至没有选择在编译器中启用Fortran 90。 这将主要是在标准中使这些错误和疏忽,并禁用一些功能。

Gfortran,在默认模式下gnu实际上接近Fortran 2003或2008编译器。 某些默认设置与Fortran 90和95不同。例如,分配时自动重新分配。 但对于Fortran 90和95甚至77中的一些程序来说,这通常是有好处的。它可以对标准进行某些常见的扩展。 塞尔廷不常见的扩展可以通过特殊的标志启用。

没有理由担心。 Fortran 95是标准的人应该关心的。 Fortran 90不是。

关于.for扩展,编译器应该正确处理,如果它符合固定的形式源,无论是77,90,95,2008年,无论如何。

f90f95之间的差别确实很小,但是扩展名为.for.f ,gfortran期望代码是固定形式的。

尝试向编译器添加-ffree-form选项。

也就是说,我建议将自由格式Fortran代码的文件扩展名为.f90 。 从长远来看,这将使事情变得更容易。

简而言之,常见的约定是: .f.for固定源代码, .f90自由格式源代码, .F.F90 (在UNIX / Linux上),用于固定格式或自由格式的源代码必须使用宏以类似C / C ++风格预处理的代码,例如#define BLAH_BLAH = 42

现在,虽然“文件扩展名”的概念在Windows平台上无处不在,但其他平台(例如UNIX / Linux / Mac OS)不会在文件名的最后一位附加任何特殊含义。 实际上,Mac OS甚至不区分main.fMAIN.F ,它们实际上是等价的。

其次,与Java,C / C ++,Python等不同,没有文件作为FORTRAN / Fortran源代码组织单元的概念。 更具体地说,在programsubroutinefunction(sub)module之外不存在代码,因此, ISO Fortran标准本身没有定义任何扩展,甚至没有规定使用磁盘上的文件来表示源代码。 这看起来有点奇怪,但是有一个很好的理由:一个操作系统可能会使用某种数据库来存储所有的信息,所以如果标准规定了磁盘上的文件作为媒介,它会排除这样的命令行/终端)系统。

一般来说,扩展名.f90.f95.f03.f08分别用于符合Fortran 90,Fortran 95,Fortran 2003和Fortran 2008标准的现代自由格式源代码。 对于较老的固定形式的代码,例如FORTRAN 77,通常使用.f.for扩展名。

我强烈建议不要使用.f95.f03.f08文件扩展名(更不用说.f15 )。 不仅所有的编译器都不能识别这些扩展,而且Fortran 2008代码仍然可以被编写为固定源代码; 它仍然是这个标准的一部分。

因此,总是使用*.f90来表示自由格式的源代码。