gfortran 续行的最大数量

Maximum number of gfortran continuation lines

我需要一点帮助:根据this site,连续行的最大数量有限制。

所以我决定测试一下。我写了一个巨型 FUNCTION,它计算在语句中表示的巨大代数公式,分为 17,146 行。

!test.f90  1.6 MB file
DOUBLE COMPLEX FUNCTION myfunction(a, b)

  DOUBLE COMPLEX, INTENT(IN) :: a
  DOUBLE COMPLEX, INTENT(IN) :: b

  myfunction = gd0/16.d0)*a*b*((a+b)**2)*((32.d0*DCONJG(f(4)))+(12&
&8.d0*DCONJG(f(11)))+(160.d0*DCONJG(f(24)))+(64.d0*DCONJG(f(46)))+(32.d0*DCONJG(f(3)))+(256.d0*DCON&
&JG(f(10)))+(480.d0*DCONJG(f(23)))+(256.d0*DCONJG(f(45)))+(32.d0*DCONJG(g(9)))+(128.d0*DCONJG(f(&
&9)))+(480.d0*DCONJG(f(22)))+(384.d0*DCONJG(f(44)))+(96.d0*DCONJG(g(21)))+(160.d0*DCONJG(f(21)))+(2&
&56.d0*DCONJG(f(43)))+(64.d0*DCONJG(g(42)))+(64.d0*DCONJG(f(42)))+(64.d0*DCONJG(f(8)))+(192.d0*DCON&
& (64.d0*DCONJG(g(42)) ! and so on and so forth...

END FUNCTION

我用 gfortran -c test.f90 编译了这个可憎的东西,它在 5 分钟后返回了一个 11.4MB test.o 的文件,没有任何错误或警告。我 运行 它返回了正确的结果。

为什么 gfortran 不遵守最大连续行规则?

为什么 gfortran 不遵守最大连续行规则?

此规则不是约束,标准允许编译器提供更大的限制作为扩展,标准为连续行的最大数量设置了最小值。编译器可能会报告超出标准最小值,但这不是必需的,可能需要一个标志。