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

Changing long variables to int type in large program

本文关键字:int 类型 变量 大型 程序      更新时间:2023-10-16

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

期望 INTEGER*4 的 Fortran 例程是在 C/C++ 端定义为长度的整数。下面是一些示例代码:

Fortran接口:

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

C/C++代码 :

long n = 1;
FOO(&n);

当然,这在为 x64 编译时不起作用,并且整数需要定义为 int。这些类型的呼叫被发出无数次,手动替换它们将永远需要。

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

首先尝试像史蒂夫在评论中建议的那样查找和替换,这应该有效:

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

其中-i在文件中提供替换,末尾的I提供不区分大小写的搜索,并且*符号使用*进行转义。您可能希望将*.f90更改为您拥有的扩展名或*.f*