我有以下FORTRAN代码:
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_cdf是inverse_cdf接口的实现,这就是为什么这里有未使用的p。正如你所看到的,我有一种方法来压制这个无用的假人论点,但我觉得这是不雅的。有谁有处理这个问题的最佳实践吗?(我还希望这是编译器不可知论的。)我知道如何普遍地压制警告,但当我有一个未使用的假人论点时,我想得到警告,而我并没有预料到这一点。
编辑以添加(应请求):
inverse_cdf接口的定义如下:
INTERFACE inverse_cdf
MODULE PROCEDURE inverse_distribution_cdf, inverse_normal_cdf, inverse_lognormal_cdf, inverse_deterministic_cdf
END INTERFACE发布于 2011-03-21 17:50:11
我猜您需要定义一个通用接口。
stuff.f90
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 stuffmain.f90
PROGRAM main
USE stuff
IMPLICIT NONE
PRINT *, stuff_foo(1.0)
PRINT *, stuff_foo(1.0, 2.0)
END PROGRAM mainhttps://stackoverflow.com/questions/5381262
复制相似问题