Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gFortran到Microsoft Fortran 5.1$STORAGE元命令是否有设置或解决方法_Fortran_Gfortran - Fatal编程技术网

gFortran到Microsoft Fortran 5.1$STORAGE元命令是否有设置或解决方法

gFortran到Microsoft Fortran 5.1$STORAGE元命令是否有设置或解决方法,fortran,gfortran,Fortran,Gfortran,我们有一些(一个巨大的库或40多个模块)旧的Fortran代码,不需要使用更新的编译器进行更新和编译 是否要设置gFortran以允许旧MS Fortran 5.1使用的$STORAGE:2元命令 根据: $STORAGE:n元命令为所有整数和逻辑变量分配“n”字节的内存。例如,当应用程序指定$STORAGE:2元命令并声明整数变量B时,编译器将为B分配两个字节,而不是四个字节。当声明包含显式长度规范(例如整数*2或整数*4)时,$STORAGE元命令不影响内存分配 我希望这是一个简单的问题,重

我们有一些(一个巨大的库或40多个模块)旧的Fortran代码,不需要使用更新的编译器进行更新和编译

是否要设置gFortran以允许旧MS Fortran 5.1使用的$STORAGE:2元命令

根据:

$STORAGE:n元命令为所有整数和逻辑变量分配“n”字节的内存。例如,当应用程序指定$STORAGE:2元命令并声明整数变量B时,编译器将为B分配两个字节,而不是四个字节。当声明包含显式长度规范(例如整数*2或整数*4)时,$STORAGE元命令不影响内存分配

我希望这是一个简单的问题,重写变量声明以使用integer*2。然而,编写它的程序员到处使用大量的隐式变量声明和许多难以处理的等价语句:

$STORAGE:2
    CHARACTER*2 ABC
    EQUIVALENCE (ABC,ITT) 

据我所知,在现代编译器中,没有办法对16位整数执行此操作

编译器通常允许通过命令行开关升级整数类型,但我不记得任何现代的免费编译器允许更改为16位


我建议重写变量声明,使用
integer*2
而不是指令。

更新更新的编译器,然后选择g77?你一定是在开玩笑。好的,我可以再要一个。。。自由整数的建议?Gfortran,但忘记2字节默认整数。您可以通过命令行开关升级到8,但不能降级。是的,这就是问题所在。。原始代码使用了大量的等价语句,其中euivalated var是一个2字节的int:CHARACTER*2 ABC等价(ABC,ITT)。您必须重写代码以使用integer*2。或者,如果要切换到较新的编译器,如非古代gfortran,则可以使用integer(kind=INT16),其中INT16在ISO_FORTRAN_ENV模块中定义。OTOH,INTEGER*2如果允许使用旧编译器编译代码可能会更好,这样就可以在转换阶段验证一切是否正常..我真的不想开始混合使用他的Fortran 77(带扩展)和Fortran 2008,但这当然是可能的,问题源于这样一个事实,即开发人员使用大量的等价语句将字符标志与整数*2值关联起来。