You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JSON-Fortran的json_module模块时出现编译警告的解决咨询

解决gfortran 6.3中JSON-Fortran的-Wsurprising警告

这个警告是gfortran的-Wsurprising选项触发的:它检测到json_file派生类型仅声明了数组的FINAL过程,没有对应的标量FINAL过程,因此给出提示。以下是几种可行的解决方式:

  • 直接禁用该警告:在编译项目时添加编译选项-Wno-surprising,彻底关闭这个类型的警告提示。这种方式不需要修改任何代码,适合快速解决问题。

  • 修改JSON-Fortran库代码添加标量FINAL过程:

    1. 找到JSON-Fortran库中json_file派生类型的定义位置(通常在json_module.f90中)。
    2. 在类型定义的final语句中添加标量FINAL过程的声明,比如:
      type :: json_file
          ! 原有类型成员...
          final :: json_file_final, json_file_final_scalar  ! 假设原数组过程是json_file_final
      end type json_file
      
    3. 实现这个标量FINAL子程序,可以直接复用数组FINAL过程的逻辑:
      subroutine json_file_final_scalar(this)
          type(json_file), intent(inout) :: this
          call json_file_final([this])  ! 把标量包装成数组调用已有过程
      end subroutine json_file_final_scalar
      

    修改后重新编译JSON-Fortran库即可消除警告。

  • 升级gfortran版本:gfortran 6.3是比较旧的版本,后续更新的gfortran版本(比如8.x及以上)对FINAL过程的检测逻辑可能有所调整,或者JSON-Fortran的后续版本已经补全了标量FINAL过程,升级后警告可能自动消失。

内容的提问来源于stack exchange,提问作者hugo manez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:57:05