Изменение длинных переменных на тип int в большой программе - PullRequest
0 голосов
/ 21 июня 2019

Я сталкиваюсь с проблемами совместимости с целочисленными типами при переносе большой базы кода в системы x64.

Подпрограммы Fortran, которые ожидают, что INTEGER * 4 передаются целым числам, определенным как long на стороне C / C ++.Вот пример кода:

Интерфейс Fortran:

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

Код C / C ++:

long n = 1;
FOO(&n);

Конечно, это не работает при компиляции для x64,и целое число должно быть определено как int.Эти типы вызовов выполняются бесчисленное количество раз, и замена их вручную займет вечность.

Существует ли более эффективный способ внесения этих изменений?

1 Ответ

1 голос
/ 22 июня 2019

Сначала попробуйте найти и заменить, как Стив предлагает в комментариях, это должно сработать:

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

, где -i дает замену в файле, I в конце дает поиск без учета регистра, а символы * экранируются с помощью \*. Возможно, вы захотите изменить *.f90 на добавочный номер или на *.f*.

...