Fortran Coder

标题: cvf 和 ivf 编译的结果不一样的原因 [打印本页]

作者: renlu617    时间: 2014-10-15 11:08
标题: cvf 和 ivf 编译的结果不一样的原因
同一个程序用cvf编译正常,用ivf编译就离谱了,求原因啊?
两个编译好的程序,第一个是ivf编的
第二个是cvf编的

QQ截图20141015111047.jpg (138.51 KB, 下载次数: 362)

QQ截图20141015111047.jpg

作者: 楚香饭    时间: 2014-10-15 11:31
我猜可能是某些变量没有初始化的原因。

IVF 可以开启未初始化变量检查。开启命令行开关 /check:uninit
作者: renlu617    时间: 2014-10-15 11:35
楚香饭 发表于 2014-10-15 11:31
我猜可能是某些变量没有初始化的原因。

IVF 可以开启未初始化变量检查。开启命令行开关 /check:uninit ...

开启命令行开关 /check:uninit
是不是在程序里面加上这句话,加哪呢?
作者: 楚香饭    时间: 2014-10-15 11:59
编译时加在编译命令后面。

如果你通过 IDE 集成环境运行,找找工程设置里的相关设置。
作者: renlu617    时间: 2014-10-15 14:00
楚香饭 发表于 2014-10-15 11:59
编译时加在编译命令后面。

如果你通过 IDE 集成环境运行,找找工程设置里的相关设置。 ...

我是一个初学者,能不能说说编译命令是什么?不是点绿色三角就运行了么?
作者: fcode    时间: 2014-10-15 14:14
OK,你先不用了解命令行。先用集成环境吧。

工程属性你知道吧?把下图中的位置改为 Yes,然后重新运行

PhoXo1.gif (12.2 KB, 下载次数: 390)

PhoXo1.gif

作者: renlu617    时间: 2014-10-15 14:28
fcode 发表于 2014-10-15 14:14
OK,你先不用了解命令行。先用集成环境吧。

工程属性你知道吧?把下图中的位置改为 Yes,然后重新运行

按你说的修改了属性,出现了一个新问题,可是我已经定义这个变量了。

1.jpg (126.36 KB, 下载次数: 396)

1.jpg

作者: fcode    时间: 2014-10-15 14:38
这就是告诉你这个变量没有初始化。

也就是说,这个变量没有赋值你就直接用了。这就导致 CVF 和 IVF 的结果不一样。因为未赋值的变量,其值是不确定的。
作者: renlu617    时间: 2014-10-15 15:06
跪谢,果然如此




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2