C vide struct — qu'est-ce à dire/faire?

J'ai trouvé ce code dans un fichier d'en-tête pour un appareil que j'ai besoin de l'utiliser, et bien que je fais du C depuis des années, je n'ai jamais rencontré ce:

struct device {
};

struct spi_device {
    struct device dev;
};

et il a utilisé comme dans:

int spi_write_then_read(struct spi_device *spi, 
const unsigned char *txbuf, unsigned n_tx,
unsigned char *rxbuf, unsigned n_rx);

et aussi ici:

struct spi_device *spi = phy->spi;

où elle est définie de la même.

Je ne suis pas sûr de ce que le point est à cette définition. C'est dans un fichier d'en-tête pour une application linux du conseil d'administration, mais je suis dérouté par l'utilisation. Des explications, des idées? Quelqu'un vu ça avant (je suis sûr que certains d'entre vous ont :).

Merci!
:bp:

  • L'Allocation de la mémoire de la déclaration de
  • Je ne suis pas sûr de ce que c'est censé signifier, mais c'est non-standard; la syntaxe d'une struct déclaration, il faut au moins un membre. C'est peut-être un espace réservé pour une future extension?
  • Il ne semble pas attribuer quoi que ce soit...
  • Normalement, il n'est pas un vide struct... et pourquoi cela a été fait dans ce cas, c'est difficile à dire sans plus de contexte.
  • Une possibilité est-il utilisé pour être un membre de la struct "périphérique", quelqu'un a supprimé le membre parce qu'il n'était plus nécessaire et vous avez oublié de supprimer la structure ou de ne pas le supprimer car elle avait besoin de plus de modifications de code.
  • Peut-être une partie de cela. Chapitre 9. Serial Peripheral Interface (SPI) Voir spi_alloc_master, struct spi_master etc.
  • si vous pensez que l'une des réponses les réponses à votre question, pourriez-vous l'accepter?