Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何允许gfortran-Werror“;字符*8编译成功_Fortran_Gfortran - Fatal编程技术网

如何允许gfortran-Werror“;字符*8编译成功

如何允许gfortran-Werror“;字符*8编译成功,fortran,gfortran,Fortran,Gfortran,我想用-Werror做一个构建,但不能因为某些问题而失败 在本例中,我有以下程序来展示我想继续使用的功能,以将旧版Fortran 77头文件包含到Fortran 2003程序中: PROGRAM gfortran_charstar CHARACTER*8 text text = 'aaaa' PRINT *, text END PROGRAM gfortran_charstar 用 $ gfortran -std=f2003 -c -o gfortran-charstar-werr

我想用-Werror做一个构建,但不能因为某些问题而失败

在本例中,我有以下程序来展示我想继续使用的功能,以将旧版Fortran 77头文件包含到Fortran 2003程序中:

PROGRAM gfortran_charstar
  CHARACTER*8 text
  text = 'aaaa'
  PRINT *, text
END PROGRAM gfortran_charstar

$ gfortran -std=f2003 -c -o gfortran-charstar-werror.o gfortran-charstar-werror.f90
给出:

gfortran-charstar-werror.f90:2.13:

  CHARACTER*8 text
             1
Warning: Obsolescent feature: Old-style character length at (1)
因此

$ gfortran -std=f2003 -Werror -c -o gfortran-charstar-werror.o gfortran-charstar-werror.f90
gfortran-charstar-werror.f90:2.2:

  CHARACTER*8 text
  1
Error: Unclassifiable statement at (1)

gfortran-charstar-werror.f90:3.9:

  text = 'aaaa'
     1
Error: Can't convert CHARACTER(1) to REAL(4) at (1)

失败了。对于其他问题,我可以使用-Wno error=unused函数来抑制错误失败,但是对于旧式字符长度规范,我没有发现任何问题。有人知道相应的标志吗?

您需要使用
-std=f2003
选项吗?我看不出强制使用2003标准和同时使用f77代码背后的逻辑。如果您知道您正在使用f77代码,请删除std=f2003零件。您可以按文件方式执行,即在不使用f2003的情况下编译旧的f77代码,并且使用f2003 check开发的部件(在单独的文件中)是一个警告,表明您正在使用某些旧构造。你可以忽略这一点。如果您使用的是
-Werror
,在这种情况下,这确实是您的问题,不是每个警告都应该被视为阻止,许多警告可以忽略。或者只使用
-std=legacy
。-std=f2003用于仍然使用旧部件的新代码。我不想将旧的部分更改为不再是Fortran 77,也不想制作F2003ized副本,因为代码位于对两个版本的标准都有效的Fortran通用头中。我需要-std=f2003,否则我会收到新构造的警告。我还想强调,字符*声明仍然是有效的Fortran 2003,过时与过时或删除并不相同。