Я пытаюсь вызвать функцию Fortran "OPEN" из C ++ (импортирована из libgfortran.a). Функцию «OPEN» непросто вызвать из C ++, поскольку она принимает список именованных аргументов, а не имеет прямой список аргументов. В Фортране эти именованные аргументы можно вызывать в любом порядке, и любой из аргументов может быть исключен.
Пример Fortran:
OPEN(UNIT=11, FILE="my_file.dat", ERR=90) #and there are many other possible arguments
В C ++:
extern "C"
{
void open(long* UNIT, <named arguments>);
}
int main(int argc, const char * argv[])
{
long unit_num = 11;
char my_file[] = "my_file.dat";
open(&unit_num, my_file); //not sure how named arguments are specified here either
}
Как указать эти именованные аргументы в C ++? Если это невозможно, есть ли другой способ заставить Fortran открыть файл и дать мне номер устройства или открыть файл с помощью fopen и каким-то образом поделиться им со средой выполнения fortran (получить номер модуля для этого файла).