mpi.h: Utiliser un type sans le définir?

J’essaie de traduire les parties importantes du fichier mpi.h d’OpenMPI dans le langage de programmation D afin que je puisse l’appeler depuis D. (HTOD ne fonctionnait pas du tout.) :

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; 

Le problème est que ompi_communicator_t n’est jamais défini dans mpi.h et que mpi.h n’inclut aucun autre fichier que stddef.h, qui ne contient clairement aucune définition. (Le commentaire indique qu’il est inclus pour ptrdiff_t .) Il s’agit des quatre seules lignes de mpi.h contenant la chaîne ompi_communicator_t . D’où vient la définition de cette structure? Existe-t-il des astuces dont je devrais être au courant lorsque des types peuvent apparaître de nulle part? (Il y a plusieurs autres structures comme celle-ci, mais c’est la première que je suis tombée sur.)

Ceci est un pointeur sur la structure, dont les éléments internes ne sont pas visibles en dehors de OpenMPI. Utilisez n’importe quel type pouvant contenir un pointeur, par exemple (en C) void* .