有谁能告诉我为什么这个简单的程序会给我一个分段错误?
我使用gfortran,我需要在子程序中使用一个函数。
program tst
implicit none
real z,x,y
x=10.
y=2.
call s(10.,10.,z)
print*,z
end program
real function c(x,y)
implicit none
real x, y
c = x*y
return
end
subroutine s(x,y,z)
implicit none
real x, y
real z
real c
z = c(x,y)
end
答案 0 :(得分:0)
最好将您的程序放入一个模块中,以便彼此了解它们的接口以及use
模块的任何过程或程序:
module MyStuff
contains
function c(x,y)
implicit none
real :: c
real :: x, y
c = x*y
return
end
subroutine s(x,y,z)
implicit none
real :: x, y, z
z = c(x,y)
end
end module MyStuff
program tst
use MyStuff
implicit none
real z,x,y
x=10.
y=2.
call s(10.,10.,z)
print*,z
end program
它有效,给出答案100。