mpi.h: Используете тип без его определения?

Я пытаюсь перевести важные части mpMP.h в OpenMPI на язык программирования D, чтобы я мог вызывать его из D. (HTOD вообще не работал.) Я не могу обернуться вокруг следующих фрагментов кода:

typedef struct ompi_communicator_t *MPI_Comm;
OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_world;
OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_self;
OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_null;

Проблема в том, что ompi_communicator_t никогда не определяется в mpi.h, а mpi.h не содержит никаких других файлов, кроме stddef.h, который явно не содержит определения. (Комментарий говорит, что он включен для ptrdiff_t.) Это только четыре строки в mpi.h, которые содержат строку ompi_communicator_t, Откуда происходит определение этой структуры? Есть ли какие-то хитрости, о которых я должен знать, где типы могут появляться из воздуха? (Есть несколько других подобных структур, но это первая, на которую я наткнулся.)

1 ответ

Решение

Это указатель на структуру, внутренности которой не видны вне OpenMPI. Используйте любой тип, который может содержать указатель, например (в C) void*,

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