Как правильно создать интерфейс lib для Fortran и C

Я хотел бы создать библиотеку, которая предоставляла бы API для программ на C и Fortran, но я хочу, чтобы имена функций были одинаковыми. Например, в реализациях MPI имена функций MPI одинаковы для Fortran и C, отличие состоит в том, что интерфейс Fortran имеет еще один аргумент ierr для хранения возвращаемого значения. Я хотел бы сделать что-то подобное.

c_api.h:

int foo(char *par);

f_api.h

void foo_(char* par, int ierr);

f_api.c:

#include "c_api.h"

void foo_(char* par, int ierr)
{
    ierr = foo(par);
}

Компилятор (очевидно) жалуется, что существуют конфликтующие типы для функции foo() и что я ранее объявил ее в c_api.h. Как правильно делать то, что я пытаюсь сделать? Я хотел бы избежать необходимости иметь разные имена API для программ на Фортране и Си.

0 ответов

Другие вопросы по тегам