警告:GNU扩展

时间:2017-04-13 14:06:08

标签: r fortran gfortran cran fortran95

当我将我的包提交给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测试我的包装时,两者都不会产生警告或注释。我正在使用R版本3.3.2(2016-10-31) - 我的MacOS上的“真诚的南瓜补丁”和代码都是用Fortran 95编写的。

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

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

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