I was browsing the Systemd / Journald header files, and in /usr/include/systemd/sd-journal.h, I noticed this line of code:
typedef struct sd_journal sd_journal;
It seems that the struct sd_journal is defined as... sd_journal. What does this reflexive / recursive typedef actually mean?