【问题标题】:Warning: GNU Extension警告:GNU 扩展
【发布时间】:2017-04-13 14:06:07
【问题描述】:

当我将我的包裹提交给 CRAN 时,它没有通过自动收货检查,并出现以下警告:

* checking whether package 'EpiILM' can be installed ... WARNING
  Found the following significant warnings:
  Warning: GNU Extension: Different type kinds at (1)

和相应的日志文件说

  Epimcmc.f95:440.25:

        psi= min(1.0,exp(ratio))
                     1
 Warning: GNU Extension: Different type kinds at (1)

当我使用 R CMD CHECK 和 R CMD CHECK --as-cran 测试我的包时,两者都没有警告或注释。我在我的 MacOS 上使用 R 版本 3.3.2 (2016-10-31) -- “Sincere Pumpkin Patch”,代码是用 Fortran 95 编写的。

有什么建议吗?

【问题讨论】:

    标签: r fortran gfortran cran fortran95


    【解决方案1】:

    您的代码太短而无法准确诊断,但可以安全地推断出代码中未显示的部分是什么。

    您的ratio 与默认值不同,可能是“双精度”。

    1.0 是默认类型(又名单精度)。

    在 Fortran 中不允许在 min() 中混合不同的类型,但您可以在以下位置执行此操作:

      min(1.0,exp(ratio))
    

    要解决此问题,请使用与 ratio 相同类型的文字。所以如果是double precision,可以使用:

      min(1.0d0, exp(ratio))
    

    如果是real(rk),你可以使用

      min(1.0_rk, exp(ratio))
    

    real(.., kind=rk)函数也可以使用。


    警告说 GNU Fortran 编译器承认它在 Fortran 中是不允许的,但允许它作为非标准扩展。 CRAN 编码标准是否允许使用此扩展是另一个问题。可能不会,如果它被拒绝了。

    【讨论】:

    • 谢谢。 'ratio' 和 'psi' 都是双精度的。将 1.0 更改为 1.0d0,看看情况如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多