2015-01-12 88 views
0

我使用Intel Visual Fortran。我正在处理的问题有许多参数,我希望避免在每个例程开始时重复声明和启动它们。使用模块在Fortran中初始化

有什么办法可以使用MODULES初始化这些参数吗?
当然,答案是肯定的,但是一些内在函数在启动语句中不被接受。
这是一个简单的示例代码,

MODULE mod 
     IMPLICIT NONE 
     REAL, PARAMETER :: x = SQRT (4) 
    END MODULE 

    PROGRAM prog 
     USE mod 
     IMPLICIT NONE 
     PRINT *, x 
    END PROGRAM 

一旦编译,编译器显示我这个错误:

Error #6362: The data types of the argument(s) are invalid. 
[SQRT] Source1.f90 

虽然使用ABS ()后面没有这个错误,但SIN ()确实。

回答

4

问题是sqrt(和sin)内在需要浮点参数。刚好碰巧有浮点数和abs的整数实现。

4替换为4.它应该工作。

+0

上帝!多么愚蠢的问题!对不起,感谢您的及时回复。 – Shaqpad

+1

我认为在这种情况下,你可以指责英特尔编译器错误。它恰好在gfortran中更加明确:)。 –

+0

在生产代码中,应该定义一个带有KIND的REAL。 – Fortranner