mpi.h: Использовать тип без его определения? - PullRequest
4 голосов
/ 04 августа 2011

Я пытаюсь перевести важные части 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 Ответ

3 голосов
/ 04 августа 2011

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

...