首页 > 解决方案 > iand 使用新的 gfortran 版本具有不同类型的参数

问题描述

我目前正在使用旧代码,它iand以不同类型的整数作为参数调用函数。这是代码包含的一个小示例:

program test
    integer*1 i
    integer j, k 

    i = 1
    j = 8 

    k = iand(i, j)
    print *, k
end program test

gfortran 版本 8 和更早的版本作为扩展能够使用不同类型的整数调用 iand(例如,请参见此处),而 gfortran 9 中删除了此选项(请参见此站点)。例如,使用 gfortran 7.5.0:

gfortran-7 -o test test.f90 && ./test
       0

但是当使用 gfortran 9.2.0 编译时,我得到:

gfortran -o test test.f90
...
Error: Arguments of ‘iand’ have different kind type parameters at (1)

新版本是否有gfortran让我按原样使用此代码的选项?

标签: fortrangfortrantype-kinds

解决方案


不,没有。由于没有很好地指定语义,因此删除了此扩展,并且将代码修复为符合标准很简单。

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81509

在你的情况下,像

k = iand(int(i, kind(j)), j)

希望是你所追求的。


推荐阅读