在将大型代码库迁移到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。这些呼叫次数不计其数,而用手工替换它们将永远耗费时间。
有没有更有效的方法来进行这些更改?
答案 0 :(得分:1)
首先尝试像Steve在评论中建议的那样进行查找和替换,这应该可行:
sed -i 's/integer\*4/integer\*8/gI' *.f90
其中-i
替换文件,最后I
进行不区分大小写的搜索,*
符号用\*
进行转义。您可能需要将*.f90
更改为您拥有的扩展名或*.f*
。