首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新的gfortran不编译Fortran90代码。

更新的gfortran不编译Fortran90代码。
EN

Stack Overflow用户
提问于 2022-05-02 21:01:17
回答 1查看 295关注 0票数 3

我有一个用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 declarationError: Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments.

有小费吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-03 09:54:43

来源

代码语言:javascript
复制
stop1
end

不是一个有效的Fortran 90/95/2003/2008/2018计划。

然而,这是一个被GCC 4.8.5接受的计划,似乎达到了预期的效果。

它被编译器的这个版本所接受,因为它没有拒绝程序的诊断能力。后来版本的GCC确实包含了这样的能力。

不需要编译器就有这种能力:这个源代码中的错误是程序员必须负责的错误。通过使用较新的编译器,您可以利用对其可选错误检查焦点的改进。一个人应该感谢一个编译器,它指出错误,即使它没有必要。

如果您有像我这里的例子一样的错误代码:修复它。在GCC的后续版本中使用旗标-std=f95不会有帮助:旗标要求检查是否更严格地符合Fortran 95标准(不允许Fortran 2003+的非标准扩展或特性),但如上所述,该代码是无效的Fortran 95代码。

不过,请注意,

代码语言:javascript
复制
      stop1
      end

是固定格式源中有效的Fortran 90+程序.如果你试图编译固定形式的源代码作为自由形式的来源,那么如上所述,早期版本的GCC将接受它,而较晚的版本将拒绝它。在这种情况下,显式地告诉编译器编译为固定格式的源,或者将源更改为有效的所谓的交集格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72092362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档