主题:我有一fortran程序在dos环境下运行没错但在windowns下不能出结果请问为什摸
			 xueshiran
				 [专家分:0]  发布于 2005-09-27 17:53:00
 xueshiran
				 [专家分:0]  发布于 2005-09-27 17:53:00							
			请各位高手帮忙,我该怎摸解决这一问题,谢谢
						
					 
		
			
回复列表 (共19个回复)
		
								
				沙发
				
					 asymptotic [专家分:16630]  发布于 2005-09-27 19:54:00
asymptotic [专家分:16630]  发布于 2005-09-27 19:54:00				
				因为 Fortran 的可移植性比较差!
							 
						
				板凳
				
					 mltx [专家分:20880]  发布于 2005-09-28 00:31:00
mltx [专家分:20880]  发布于 2005-09-28 00:31:00				
				Fortran是可移植性最好的计算机语言之一。
你用的是什么编译器?是什么系统?
有些编译器能生成Dos运行软件,但不能在Win32下运行。
							 
						
				3 楼
				
					 asymptotic [专家分:16630]  发布于 2005-09-28 09:38:00
asymptotic [专家分:16630]  发布于 2005-09-28 09:38:00				
				Fortran 和 Assembler 比,可移植性当然好啦;
C 批判 Fortran 的重要的一条就是 可移植性 差!
							 
						
				4 楼
				
					 mltx [专家分:20880]  发布于 2005-09-28 13:13:00
mltx [专家分:20880]  发布于 2005-09-28 13:13:00				
				1. 我说“之一”。不排斥其他
2. 这种批判是单方面的,是针对老Fortran的,现在有多少人真正懂现代的Fortran?
3. 还是回答原问题:dos下可运行,Windows下不能运行,绝不是语言可移植性的问题,是编译器的问题。
							 
						
				5 楼
				
					 asymptotic [专家分:16630]  发布于 2005-09-28 15:13:00
asymptotic [专家分:16630]  发布于 2005-09-28 15:13:00				
				程序编译器相关,不是和 可移植性 不好说法一样吗?
    很多 C 的代码,在 Win 下可以运行,在 Linux 下也可以运行,编译器当然也不一样,因此我们说它的可移植性 好。
    不对之处,敬请指正!
							 
						
				6 楼
				
					 mltx [专家分:20880]  发布于 2005-09-29 00:05:00
mltx [专家分:20880]  发布于 2005-09-29 00:05:00				
				语言的可移植性 应该是指源代码不经任何修改就可以在各种平台上(用该平台上的编译器)编译执行。
标准Fortran语言的源代码,不经任何修改,就可以在Dos,Win16,Win32,Linux,Unix,VAX,。。。。上编译执行。而且,F90之后的版本,还专门增添了控制数值精度的语法功能,使得在不同平台上不仅可以运行,而且可以控制同等的精度。例如:64位机的单精度可能比32位机的单精度长一倍,这样,同一个代码,移植到64位机上可能会给出完全不同的数值结果,但是F90/95可以控制64位机上的给出同32位机上相同的数值结果(32位以内))!
早期的Fortran编译器(如MS Fortran),只能编译出DOS下运行的EXE,那种EXE就不能在Win环境下执行,甚至也不能在Win32的Dos窗口下运行,那是编译器的问题。早期的C语言编译器也是一样,其Dos下的编译器编译出来的exe,也不一定能在Win32的dos窗口下运行。这是编译器编译出来的EXE的兼容问题,例如,WinXP下的EXE属性中就有一项兼容模式的选项共用户设置。
VB是MS Windows的语言,到纯Dos环境中根本无法用,连编译器都没有,就谈不上可移植性。
探讨。。。
							 
						
				7 楼
				
					 asymptotic [专家分:16630]  发布于 2005-09-29 07:57:00
asymptotic [专家分:16630]  发布于 2005-09-29 07:57:00				
				C 中的 编译预处理 命令就可以用来解决程序移植的问题,我们可以看看一些库文件,就可以发现其中有很多的诸如“如果定义某某平台,。。。,如果定义另外的平台,有如何如何”;typedef 就可以用来解决不同系统 --> 内部类型表示字节不同 这个差异。
    很遗憾的是,Fortran 在这方面还很欠缺。VF 在这方面有所扩展,但可惜的是,它目前还不是 Fortran 的标准语法,说不定以后的新语法会加入相关的功能; Fortran90/95 已经向 C 学了不少东西,这个也是事实,因此,我深信将来的 将来的 Fortran 语法,会有 编译预处理 命令的。
							 
						
				8 楼
				
					 lj1982002 [专家分:430]  发布于 2005-09-29 21:05:00
lj1982002 [专家分:430]  发布于 2005-09-29 21:05:00				
				是和编译器有关,我也遇到这个问题,在powerstation4.0上和在cvf上发现的错误就不一样。我个人觉得FORTRAN是编译形式的语言,可能与编译的平台有关,至于它语言本身听说有精度问题。粗浅的看法
							 
						
				9 楼
				
					 freebird3000 [专家分:150]  发布于 2005-09-30 12:52:00
freebird3000 [专家分:150]  发布于 2005-09-30 12:52:00				
				可移植性应该并非针对编译器而言,mltx的解释应该是对的。
对可移植性,C/C++与FORTRAN应该差不多,可移植性都不错,只要程序是按照标准编写并且编译器对标准完全支持
至于编译预处理,其实针对不同的平台,自己用FORTRAN曲线实现其大部分功能也是可以的呀,如果从控制精度来说,对90以后的标准,只要按标准来,应该不需要
							 
						
				10 楼
				
					 professor [专家分:160]  发布于 2005-10-01 01:50:00
professor [专家分:160]  发布于 2005-10-01 01:50:00				
				答复楼主一下,这是正常现象啊,呵呵。
笼统地讲,就叫软件的兼容性问题,在非商品化的软件中经常会遇到的。
楼主有源代码吗?在WINDOWS平台下重新编译连接一下吧。
							 
									
			
我来回复