Передача производного типа из Фортрана в C ++ - PullRequest
2 голосов
/ 18 января 2011

У меня есть старая программа на Fortran77, которая вызывает функцию C ++ и передает ей несколько массивов значений (всего ~ 100 отдельных значений).Я хотел бы преобразовать массивы в производные типы, чтобы сделать код более читабельным и дать имена отдельным членам массивов.

Можно ли передать производный тип из Fortran в функцию C ++?

Как C ++ узнает, как выглядит структура?Нужно ли определять структуру дважды (один раз в Фортране и один раз в С ++), и если да, есть ли какой-нибудь автоматический способ проверить, что обе структуры синхронизированы?

Я использую GCC;Я, очевидно, должен был бы переключить код Фортрана на Фортран95 или выше.

1 Ответ

3 голосов
/ 18 января 2011

Посмотрите на ISO_C_BINDING, привязку C-Fortran, которая является частью F2003.Вы можете создать производный тип с атрибутом BIND (C), который будет совместим со структурой C «процессора-компаньона C» (в случае gfortran, gcc).

См. Главу 7 вРуководство gfortran: http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html

...