Compilation Fortran:f和f扩展之间的区别

Compilation Fortran:f和f扩展之间的区别,compilation,fortran,file-extension,Compilation,Fortran,File Extension,我是Fortran的初学者 我想知道:Fortran文件的.f和.f扩展名之间有什么区别。我知道很多:f是免费的,f是固定的 “免费”和“固定”实际上意味着什么?为什么它们会完全破坏编译过程?(我正在使用gfortran和ifort) 我用谷歌搜索了f和f扩展之间的fortran差异。我对结果不满意,这就是我转向stackoverflow的原因 如果你能推荐一个好的参考来阅读这篇文章,我很乐意这样做。据我所知,.f和.f都是与FORTRAN 77固定格式相关的扩展。固定格式限制为72列,其中前六

我是Fortran的初学者

我想知道:Fortran文件的.f.f扩展名之间有什么区别。我知道很多:f是免费的,f是固定的

“免费”和“固定”实际上意味着什么?为什么它们会完全破坏编译过程?(我正在使用gfortran和ifort)

我用谷歌搜索了f和f扩展之间的fortran差异。我对结果不满意,这就是我转向stackoverflow的原因


如果你能推荐一个好的参考来阅读这篇文章,我很乐意这样做。

据我所知,
.f
.f
都是与FORTRAN 77固定格式相关的扩展。固定格式限制为72列,其中前六列用于特殊用途。例如,位置6处的
&
表示上一行的延续

自由形式是在Fortran 90中引入的,通常由
.f90
.f90
表示。对于自由格式,最多可以使用132列,并且不存在特殊列。行的结尾用一个符号和表示行的延续

文件扩展名中的大写字母通常会打开预处理器


请注意,对于大多数编译器,这些约定可以用编译选项覆盖

这取决于编译器,可能不应该依赖。通常大写后缀表示应该使用预处理。自由格式和固定格式之间的区别通常由.f90(自由)和.f(固定)来区分

由于这是编译器依赖的,一个好的文档将是您的编译器之一。如果您碰巧使用gfortran,您可能会查看它和上的部分。

在gfortran中,自由形式(对于cols 7、72没有特殊意义)是由编译器开关-ffree form设置的,与.f.f文件后缀无关。.f和.f之间的区别在于后者通过一个预处理器,最常用的是允许使用类似C的define语句。例如:

#define MAXN 100
program example
integer N(MAXN)
end

如果它是.F将编译,但如果它是.F则不会编译。大写字母F表示应使用类似C的编译器


不幸的是,我无法将两个答案都标记为已接受答案。你的回答也很有用。谢谢gfortran当然承认其他答案中提到的“.f”表示固定,.f90表示自由”的惯例。如果不是完全错误的话,恐怕你的答案是误导性的。这里的其他答案更好。它是一个预处理器,而不是一个编译器。