首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抑制Fortran中单个函数的未使用的虚拟参数警告?

如何抑制Fortran中单个函数的未使用的虚拟参数警告?
EN

Stack Overflow用户
提问于 2011-03-21 17:22:01
回答 1查看 1.7K关注 0票数 2

我有以下FORTRAN代码:

代码语言:javascript
复制
FUNCTION inverse_deterministic_cdf(dist, p) RESULT(value)
    !=========== result ============
    REAL(C_DOUBLE) :: value

    !====== input parameters =======
    TYPE(deterministic), INTENT(IN) :: dist
    REAL(C_DOUBLE), INTENT(IN) :: p

    !======= subroutine body =======
    value = p ! This is only here to suppress unused dummy argument warning
    value = dist%value
END FUNCTION inverse_deterministic_cdf

在本例中,inverse_deterministic_cdfinverse_cdf接口的实现,这就是为什么这里有未使用的p。正如你所看到的,我有一种方法来压制这个无用的假人论点,但我觉得这是不雅的。有谁有处理这个问题的最佳实践吗?(我还希望这是编译器不可知论的。)我知道如何普遍地压制警告,但当我有一个未使用的假人论点时,我想得到警告,而我并没有预料到这一点。

编辑以添加(应请求):

inverse_cdf接口的定义如下:

代码语言:javascript
复制
INTERFACE inverse_cdf
    MODULE PROCEDURE inverse_distribution_cdf, inverse_normal_cdf, inverse_lognormal_cdf, inverse_deterministic_cdf
END INTERFACE
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-21 17:50:11

我猜您需要定义一个通用接口

stuff.f90

代码语言:javascript
复制
MODULE stuff

  IMPLICIT NONE

  INTERFACE stuff_foo
    MODULE PROCEDURE foo1
    MODULE PROCEDURE foo2
  END INTERFACE stuff_foo

  CONTAINS

    FUNCTION foo1(a) RESULT(f)
    REAL :: a
    REAL :: f

      f = a

    END FUNCTION foo1

    FUNCTION foo2(a, b) RESULT(f)
    REAL :: a
    REAL :: b
    REAL :: f

      f = a + b

    END FUNCTION foo2

END MODULE stuff

main.f90

代码语言:javascript
复制
PROGRAM main

  USE stuff

  IMPLICIT NONE

  PRINT *, stuff_foo(1.0)
  PRINT *, stuff_foo(1.0, 2.0)

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

https://stackoverflow.com/questions/5381262

复制
相关文章

相似问题

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