Fortran:f和F扩展名的区别

14

我是一个Fortran的新手。

我想知道:.f.F文件扩展名之间有什么区别。我知道这一点:f代表free,F代表fixed。

free和fixed实际上意味着什么,为什么它们会完全破坏编译过程呢?(我正在使用gfortranifort)。

我已经谷歌搜索了fortran difference between f and F extension,但不满意结果,所以我来到stackoverflow寻求帮助。

如果您能建议一个好的参考文献来学习这方面的内容,我将非常感激。

4个回答

13
据我所知,.f.F都是与FORTRAN 77固定格式相关联的文件扩展名。固定格式限制为72列,其中前6列具有特殊用途。例如,在第6列处放置&表示该行续接上一行。
自Fortran 90引入自由格式后,通常用.f90.F90表示。对于自由格式,您可以使用多达132列,并且没有特殊的列。在行末使用和号表示续行。
文件扩展名中的大写字母通常会打开预处理器。
请注意,这些是约定,大多数编译器都可以通过编译选项覆盖。

7
这是与编译器有关的,可能不应该依赖。通常大写后缀表示需要使用预处理。自由格式和定长格式的区别通常是通过 .f90(自由格式)和 .f(定长格式)来区分。
由于这是与编译器有关的,一个好的文档应该是你的编译器文档。如果您使用的是gfortran,您可以查看其选项预处理部分。

1
很遗憾,我不能将两个答案都标记为“已接受的答案”。您的回答也非常有用。谢谢! - seb

1
在gfortran中,自由格式(第7列和第72列没有特殊含义)是通过编译器开关-ffree-form设置的,与.f或.F文件后缀无关。.f和.F之间的区别在于后者经过预处理器处理,最常见的用途是允许类似C语言的#define语句。例如:
#define MAXN 100
program example
integer N(MAXN)
end

如果是 .F,它将会编译通过,但如果是 .f,则无法编译通过。


gfortran肯定会识别其他答案中提到的".f表示固定格式,.f90表示自由格式"的约定。 - agentp

-1

1
很抱歉,如果不是完全错误的话,你的回答有误导性。其他的回答更好。这是关于预处理器而不是编译器的问题。 - Vladimir F Героям слава

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接