vvt 发表于 2018-6-15 15:54 谢谢回复,解决了我很大的困惑。 |
本帖最后由 vvt 于 2018-6-15 15:58 编辑 跟操作系统没关系呀,主要是编译器的默认参数不一样。 ivf 用VS编译,会默认检查数组越界,而命令行则不会 命令行可以加选项 -check:bounds 使其增加越界检查。 |
vvt 发表于 2018-6-15 10:41 谢谢回复。问题解决了,出错是数组越界。但我有一点不明白。 我有两台电脑,一个mac,一个windows。都装的ivf。mac用终端运行,windows用vs。 一模一样的代码,mac能运行,windows就会出问题。 比如数组 integer::i real::a(3) do i=1,3 a(i+2)=i end do 在mac会出结果a(3)=1,a(4)=2,a(5)=3 但在windos就会报错,说数组越界。 您知道这个是什么原因吗? |
这个问题需要精细的单步调试才能找到原因。 |
[Fortran] 纯文本查看 复制代码 subroutine fcn(X,F,N) integer, intent(in) :: n real(kind(1d0)), intent(in) :: x(n) real(kind(1d0)), intent(out) :: f(n) subroutine lsjac(n,X,fjac) integer::i1,j1 integer, intent(in) :: n real(kind(1d0)), intent(in) :: x(n) real(kind(1d0)), intent(out) :: fjac(n,n) |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-11-23 18:36