gpt4 book ai didi

compiler-errors - Fortran 错误 : Type mismatch in argument ‘n’ at (1); passed REAL(4) to INTEGER(4)

转载 作者:行者123 更新时间:2023-12-02 10:59:36 29 4
gpt4 key购买 nike

我正在学习 Fortran,特别是模块。我写了这个简单的代码来计算正弦函数的导数:

module constants
real, parameter::x=3.14
real, parameter::h=0.0001
end module constants

module derivata1

contains
real function der1(n)
use constants
real::der
der=(sin(x+h)-sin(x))/h
end function der1
end module derivata1
program derivate
use constants
use derivata1
implicit none
real der1

print *, der1(x)
end program derivate

我在 gfortran 中收到以下错误。
der2.f90:40.10:

real der1
1
der2.f90:38.5:

use derivata1
2
Error: Symbol 'der1' at (1) conflicts with symbol from module 'derivata1', use-associated at (2)
der2.f90:44:15:

print *, der1(x)
1
Error: Type mismatch in argument ‘n’ at (1); passed REAL(4) to INTEGER(4)

我关注了 thisthis帖子,但没有结果。

我的错误在哪里?

最佳答案

您应该使用 IMPLICIT NONE在所有编译单元中。

在模块内你没有IMPLICIT NONE所以论点n是隐式整数,因为它没有被声明为其他。

此外,你不应该做任何

real der1

在要使用函数的程序中 der1来自一个模块,因为这使得函数被声明为外部的。然后编译器认为您正在调用其他函数 der1这是其他地方,但不在该模块中。

关于compiler-errors - Fortran 错误 : Type mismatch in argument ‘n’ at (1); passed REAL(4) to INTEGER(4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115624/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com