1

我一直使用自由格式的 .f90 来编写 Fortran 代码,但现在我必须使用一些固定格式的 .f 代码。据我所知,可以通过在第 6 列中放置任意非空白、非零符号来实现固定格式的续行。所以第一个块应该可以工作

      x =
     &    1

这第二个区块会失败

      x = &
     &    1

我已经通过一个简单的演示代码证明了上述结论,无论是使用 Makefile 编译还是使用 Cmake 编译。如果使用第一种方式,一切都很好;如果是第二种,编译器会报错,说它不能理解等号后面的“&”。

现在让我感到困惑的是,我有一个由其他人以固定形式(.f)编写的巨大 Fortran 代码。在这个巨大的代码中用于行延续的东西就像第二种方式(这对我来说似乎不起作用)。但是该代码的 Makefile 设法以某种方式克服了这个问题。该代码和 Makefile 太大而复杂,我无法管理。

所以我的问题是:我怎样才能让编译器通过第二种方式?巨大的 Fortran 代码有什么魔力?感谢您的任何提示。

更新:

我尝试按照建议使用 -ffree-form ,但仍然出现相同的错误。这是演示 .f 文件和 Makefile。

主文件

      PROGRAM main


      IMPLICIT NONE
        REAL        ::  x
        REAL        ::  y

        x =  &
     &      1
        WRITE(*,*) x

      END PROGRAM main

生成文件:

FC = gfortran
FCFLAGS = -ffree-form

SRCS = main.f
SOBJ = $(SRCS:.f=.o)
EXEC = $(SRCS:.f=)

all: $(EXEC)

%.o: %.f
    $(FC) $(FCFLAGS) -c $<
4

0 回答 0