我总是使用自由格式.f90来编写Fortran代码,但现在我必须使用一些固定格式的.f代码。据我所知,固定格式的续行可以通过在第6列中放置任意非空白,非零符号来实现。 所以第一个块应该可以工作
x =
& 1
并且第二个块将失败
x = &
& 1
我通过简单的演示代码证明了上述结论,它们都使用Makefile进行编译并使用Cmake进行编译。如果使用第一种方式,一切都很好;如果第二个,编译器将报告错误,说它无法理解“&”等号后。
现在令我困惑的是,我有一个固定格式(.f)的巨大Fortran代码。这个巨大的代码用于行继续使用的是第二种方式(这对我来说似乎不起作用)。但该代码的Makefile设法以某种方式克服了这个问题。该代码和Makefile是如此庞大和复杂,我无法管理。
所以我的问题是:我如何让编译器通过第二种方式?巨大的Fortran代码有什么神奇之处呢?感谢任何提示。
更新
我尝试按照建议使用-ffree-form,但仍然会遇到相同的错误。这是demo .f文件和Makefile。
main.f
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 $<