fortran - 在 Fortran 中调用子例程(段错误)

标签 fortran fortran90 fortran95 intel-fortran

以下代码在 Linux 系统上使用 pgf90 编译时出现段错误,而在 Windows 上使用 Intel Visual FORTRAN 时运行成功。

program main 
implicit none 
integer:: a(3), b(3) ,c(3)
a=[3, 4, 5]
b=[1, 2, 3]
call sub(a,b,c)
write(*,*)'a+b = ',c 
end program main

subroutine sub(a,b,c) 
implicit none 
integer, intent(in)::a(:),b(:)
integer, intent(out)::c(:)
c=a+b
end subroutine sub 

对此有何解释?

最佳答案

当您调用具有虚拟参数形状的子例程(如本程序中的情况)时,需要显式接口(interface)。实现此目的最简单的方法是将子程序放在模块中,并在主程序中使用该模块。

关于fortran - 在 Fortran 中调用子例程(段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439197/

相关文章:

fortran - 添加/删除 PRINT 语句会更改变量

c - 在 R : use . Fortran 或 .Call 中高效调用 F95?

algorithm - 公式中的智能求和)翻译)

fortran - 在 Fortran90 中从文本文件中跳过一行

fortran - 在 fortran 中如何从 fortran 中的 .dat 文件中逐行读取所有字符串

c - 在编译时重命名符号而不以跨平台方式更改代码

fortran - Amber12 中的 `Fortran runtime error: End of file`

fortran - Fortran意图(inout)与省略意图

fortran - 如何在 Fortran 中实现数组结构而不是结构数组?

Fortran 调用函数时无限循环