我有一个用gfortran4.8.5编译和工作的Fortran90代码。但是,当我尝试用更新的gfortran版本编译它时(我已经测试了6.3到11.2),它不起作用!
如果我不向gfortran-6.3+添加任何标志,就会得到Error: Blank required in STOP statement near (1)。
如果我加上-std=f95,我会得到Error: GNU Extension: Nonstandard type declaration或Error: Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments.
有小费吗?谢谢!
发布于 2022-05-03 09:54:43
来源
stop1
end不是一个有效的Fortran 90/95/2003/2008/2018计划。
然而,这是一个被GCC 4.8.5接受的计划,似乎达到了预期的效果。
它被编译器的这个版本所接受,因为它没有拒绝程序的诊断能力。后来版本的GCC确实包含了这样的能力。
不需要编译器就有这种能力:这个源代码中的错误是程序员必须负责的错误。通过使用较新的编译器,您可以利用对其可选错误检查焦点的改进。一个人应该感谢一个编译器,它指出错误,即使它没有必要。
如果您有像我这里的例子一样的错误代码:修复它。在GCC的后续版本中使用旗标-std=f95不会有帮助:旗标要求检查是否更严格地符合Fortran 95标准(不允许Fortran 2003+的非标准扩展或特性),但如上所述,该代码是无效的Fortran 95代码。
不过,请注意,
stop1
end是固定格式源中有效的Fortran 90+程序.如果你试图编译固定形式的源代码作为自由形式的来源,那么如上所述,早期版本的GCC将接受它,而较晚的版本将拒绝它。在这种情况下,显式地告诉编译器编译为固定格式的源,或者将源更改为有效的所谓的交集格式。
https://stackoverflow.com/questions/72092362
复制相似问题