警告:GNU 扩展

Warning: GNU Extension

当我将包裹提交给 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 编写的。

有什么建议吗?

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

您的 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 编码标准是否允许使用此扩展是另一个问题。可能不会,如果它被拒绝了。