主题:很诡异的错误
freqent
[专家分:0] 发布于 2011-07-05 12:06:00
我现在都怀疑是不是ifort的bug了。 是这样的, prog1 运行正确,现在我在里面加入一个subroutineA , 并且我不调用这个subroutine, 结果却输出错误, 出现了 NAH.
我把subroutine 中的 common, module 部分去掉 还是不可以,
最后发现 去掉subroutineA 里面的一个 call subroutineB , prog1就运行正确了。
明明没调用,怎么会对程序有影响啊, 求解释啊!
回复列表 (共18个回复)
11 楼
cgl_lgs [专家分:21040] 发布于 2011-07-07 10:53:00
common 和 module全去掉还能编译通过?
12 楼
adda [专家分:1520] 发布于 2011-07-07 18:31:00
[quote]
我把 common 和module 全部去掉了,还是不可以。 对了 linux 下 ivf 怎样设置数组边界检查啊?[/quote]
把所有的运行时检查打开:-check all
13 楼
freqent [专家分:0] 发布于 2011-07-08 18:04:00
多谢指点啊。-check all 解决这个问题了。
原因是这样的 我在一个子程序中使用数组的时候, 定义是 integer num(7), 但是 我使用了num(0)(和C是有区别的啊),检测子程序时候,包括后来运行计算别的数值都没有问题。现在改为
integer num(0:6) 就可以了啊。不过,产生这种错误的原因,我还是不清楚。
另外如果 使用integer i, 但是使用之前没有赋值,check all 也是过不去的。
http://origin-software.intel.com/en-us/forums/showthread.php?t=70730
以后一定在数组面前 谨慎再谨慎了。
14 楼
yeg001 [专家分:14390] 发布于 2011-07-08 21:06:00
就是在linux下编译调试不方便, ivf提供的linux下IDE也没有windows下方便. 所以我都是在windows下调试然后到linux下运算. 要用熟linux环境下的工具还要花不少时间.
15 楼
aliouying [专家分:1150] 发布于 2011-07-09 11:04:00
[quote]就是在linux下编译调试不方便, ivf提供的linux下IDE也没有windows下方便. 所以我都是在windows下调试然后到linux下运算. 要用熟linux环境下的工具还要花不少时间.[/quote]
你已经不错了,我对linux下的工具基本没一个熟悉的。
16 楼
cgl_lgs [专家分:21040] 发布于 2011-07-09 20:16:00
用CodeBlocks呗~~~~
17 楼
freqent [专家分:0] 发布于 2011-07-10 09:10:00
恩,我刚装了这个 codeblocks_fortran 感觉不错的的IDE,不过碰到了一些小问题,我先自己研究一下
18 楼
cgl_lgs [专家分:21040] 发布于 2011-07-10 23:03:00
董兄是Code::Blocks的牛A+1人物:)
我来回复