使用新的gfortran版本使用不同种类的参数

问题描述 投票:6回答:1

我当前正在使用旧代码,该代码使用不同种类的整数作为参数来调用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(例如,参见here),而此选项在gfortran 9中已删除(参见this site)。例如,使用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的新版本是否可以让我按原样使用此代码?

fortran gfortran type-kinds
1个回答
3
投票

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

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

在您的情况下,类似

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

希望是你所追求的。

© www.soinside.com 2019 - 2024. All rights reserved.