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*
,