我是FORTRAN的新手,并且收到了这个错误#6404。
my_file.f(11): error #6404: This name does not have a type, and must have an explicit type.
[POTENCIAL] d=POTENCIAL(1.0,1.0,1.0,1.0,1.4,1.4)
这是ifort编译器,我希望它不是编译器错误。
我错的任何想法?
program iiuu
implicit none
REAL*8 d
d=POTENCIAL(1.0,1.0,1.0,1.0,1.4,1.4)
write(*,*) 'potential=', d
END program iiuu
FUNCTION POTENCIAL(R1,R2,R3,R4,R5,R6)
REAL*8 R1,R2,R3,R4,R5,R6,V2,V3,V4
DIMENSION R(6)
R(1)=R1
R(2)=R2
R(3)=R3
R(4)=R4
R(5)=R5
R(6)=R6
V2=V2BODY(R)
V3=V3BODY(R)
V4=V4BODY(R)
POTENCIAL=V2+V3+V4+VADD(R)
RETURN
END
FUNCTION V2BODY(R)
.....
.....
答案 0 :(得分:14)
不,这不是编译器错误。这是对代码的编辑,至少有可能编译:
program iiuu
implicit none
REAL*8 d
d=POTENCIAL(1.0d0,1.0d0,1.0d0,1.0d0,1.4d0,1.4d0)
write(*,*) 'potential=', d
contains
real*8 FUNCTION POTENCIAL(R1,R2,R3,R4,R5,R6)
REAL*8 R1,R2,R3,R4,R5,R6,V2,V3,V4
real*8, DIMENSION(6) :: R
R(1)=R1
R(2)=R2
R(3)=R3
R(4)=R4
R(5)=R5
R(6)=R6
V2=V2BODY(R)
V3=V3BODY(R)
V4=V4BODY(R)
POTENCIAL=V2+V3+V4+VADD(R)
END function potencial
END program iiuu
potencial
函数没有返回类型(这是您遇到的原始错误消息)return
声明没有必要)modules
和use
,或使用contains
语句,如上例所示1.0
是单精度的。使用1.d0
告诉编译器它是双精度数potencial
函数的参数?答案 1 :(得分:2)
我得到了它的工作。 只是将其更改为正确的数据类型表示。 其余的仍然相同。
program iiuu
IMPLICIT none
REAL*8 d, POTENCIAL
d=POTENCIAL(1.0d0,1.0d0,1.0d0,1.0d0,1.4d0,1.4d0)
write(*,*) 'potential=', d
END program iiuu
FUNCTION POTENCIAL(R1,R2,R3,R4,R5,R6)
IMPLICIT REAL*8(A-H,O-Z)
DIMENSION R(6)
R(1)=R1
R(2)=R2
......
......