结合Fortran .for和.f90包含头文件

时间:2015-06-10 07:50:05

标签: include fortran header-files

我有一个旧的Fortran程序,我必须要照顾。我有一些扩展名为 .fd .f90 .for 的文件应该可以协同工作。我用Visual studio。

我是Fortran的初学者,所以我有以下问题:

.f90和.for - 文件一起工作吗?我是否必须将其转换为anoter?如果是这样,你会使用哪个版本?

我有一个ABC.f90文件,可以进行一些简单的计算。我还有一个ABC.fd似乎是头文件。在我的ABC.f90中,我有以下声明:

include 'ABC.fd'    

这不会起作用,但是当我用ABC.fd的内容替换该行时,这部分程序没有问题。

如何正确添加标题文件?标题文件的扩展名.fd是否正确?

1 个答案:

答案 0 :(得分:2)

我有理由相信这是一个重复的Q& A,但无法找到原件。如果你能找到它,请随意用锤子敲打。

Fortran语言标准几乎没有认识到存在源文件的可能性,也没有强制要求甚至推荐文件名后缀。多年来,出现了一些事实上的标准;仍然可以说服编译器处理文件的方式与应用于名称上带有给定后缀的文件的默认处理方式不同。在阅读时牢记这一点。

.f90通常表示自由格式源文件,该文件不遵守Fortran 90前标准,用于源文件的严格布局,其中列1-6保留用于行标签,7表示行继续符,8-72表示程序语句

.for通常表示一个固定格式源文件,该文件确实遵循现在过时的编写代码的方法,就像使用穿孔卡一样。

您当然可以构建包含两种物种的源文件的程序。编译器通常会默认正确处理文件,并且可能使用文件名后缀来确定要应用的处理方法。编译器还提供了将.f90文件视为固定格式的选项,因为这通常会导致编译错误,但您并不清楚它是否曾经存在过。而反之亦然

Fortran并不真正做头文件,而不是像C这样令人惊叹的现代语言。许多人使用include来包含其他语言中将包含在头文件中的材料。但是,include操作非常简单,它有效地告诉编译器复制所包含文件的内容并将其粘贴到include行上的Fortran源文件(无需修改)。

.fd不是,我知道,Fortran世界中的事实上的标准,并且包含行可以包含它想要的任何文件,甚至是{{1 }或.f90文件。任何文件都可以。 有关 .txt 文件的更多信息,请参阅下面的Steve Lionel评论。

包括不起作用的常见原因(尽管您应该报告错误消息以获得更确凿的诊断):

  • 包含的文件不是编译器正在寻找它的地方;
  • 包含会导致文件不符合Fortran严格的语句排序规则。如果复制粘贴有效,那么在您的情况下这似乎不太可能。