在大型程序中将long变量更改为int类型

Changing long variables to int type in large program

我在将大型代码库迁移到 x64 系统时遇到整数类型的兼容性问题。

期望 INTEGER*4 的 Fortran 例程被传递为在 C/C++ 端定义为 long 的整数。这是一些示例代码:

Fortran 接口:

SUBROUTINE FOO(N)
    INTEGER*4 N
    !! DO SOME WORK
END

C/C++代码:

long n = 1;
FOO(&n);

当然,这在为x64编译时不起作用,需要将整数定义为int。那些类型的电话打了无数次,用手代替它们将永远。

是否有更有效的方法来进行这些更改?

首先像史蒂夫在评论中建议的那样尝试 find-and-replace,这应该有效:

sed -i 's/integer\*4/integer\*8/gI' *.f90

其中 -i 给出文件中的替换,末尾的 I 给出 case-insensitive 搜索,* 符号用 \* 转义。您可能希望将 *.f90 更改为您拥有的扩展名或 *.f*