Фортран обычно передает свои переменные по ссылке (передает указатели).
Это означает, что вы ДОЛЖНЫ дать адреса в вызывающей C-программе.
Результаты функции могут передаваться по значению, например, следующее
Код вызывает функцию FORTRAN под названием «гамма»:
double x, y;
..................
x = 2.0;
y = gamma_(&x)
Убедитесь, что
размер переменной в вызывающей программе идентичен размеру
в рутине Фортрана:
float --- REAL (this is typical, but not always the case)
double --- REAL*8
Функция Fortran должна быть объявлена в начале вызывающей функции C:
extern void read_(int *small, float *medium, double *large);
Примечание мы должны передать все переменные в Фортран как указатели. Хотя имя функции не учитывает регистр в Фортране, оно получает подчеркивание в объявлении C и при его вызове:
read_(&small, &medium, &large);
Функция Фортрана получает переменные следующим образом:
SUBROUTINE READ(small,medium,large)
INTEGER small
REAL medium
DOUBLE large
Точный размер этих переменных зависит от архитектуры вашей системы (32-разрядные и 64-разрядные стихи), поэтому вам необходимо подтвердить соответствие между числами типа int, float и double в C и Fortran в вашей системе.