struct str1; /* déclaration de référence de str1        */
struct str2  /* définition de str2 qui référence str1   */
   {
   ...
   struct str1 * p;
   };
struct str1  /* définition de str1 qui référence str2   */
   {
   ...
   struct str2 *p;
   };
Le mécanisme est le même avec les unions.