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

时间:2019-06-21 15:25:46

标签: c++ fortran migration 64-bit

在将大型代码库迁移到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。这些呼叫次数不计其数,而用手工替换它们将永远耗费时间。

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

1 个答案:

答案 0 :(得分:1)

首先尝试像Steve在评论中建议的那样进行查找和替换,这应该可行:

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

其中-i替换文件,最后I进行不区分大小写的搜索,*符号用\*进行转义。您可能需要将*.f90更改为您拥有的扩展名或*.f*