我一直使用自由格式的 .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 $<