title: GCC header file include bug?
body: <p>I might be experiencing a gcc header include bug not im not too sure</p>
  <p>If I compile my code, I get type not defined error like this</p>
  <pre><code>src/kernel/memory.h:102:31: error: unknown type name 'IDT_pageFault_error_t'
    102 | void memory_interrupt_handler(IDT_pageFault_error_t pageFault_error, uintptr_t cr2);
  </code></pre>
  <p>I am sure this is not related to circular inclusions as I guarded all header files with <code>#pragma once</code> so i'm not sure what is causing this include error</p>
  <p>Code snippets (removed all the unrelated bits of code)</p>
  <p><code>interrupt.h</code></p>
  <pre><code>#pragma once
  #include &quot;memory.h&quot;
  
  typedef struct IDT_pageFault_error_t {
      union {
          uint32_t data;
          struct {
              uint32_t P:1;                                                                       // Present              When set, the page fault was caused by a page-protection violation. When not set, it was caused by a non-present page.
              uint32_t W:1;                                                                       // Write                When set, the page fault was caused by a write access. When not set, it was caused by a read access.
              uint32_t U:1;                                                                       // User                 When set, the page fault was caused while CPL = 3. This does not necessarily mean that the page fault was a privilege violation.
              uint32_t R:1;                                                                       // Reserved write       When set, one or more page directory entries contain reserved bits which are set to 1. This only applies when the PSE or PAE flags in CR4 are set to 1.
              uint32_t reserved:28;
          } __attribute__ ((packed));
      };
  } __attribute__ ((packed)) IDT_pageFault_error_t;
  </code></pre>
  <p><code>memory.h</code></p>
  <pre><code>#pragma once
  #include &quot;interrupt.h&quot;
  
  void memory_interrupt_handler(IDT_pageFault_error_t pageFault_error, uintptr_t cr2);
  </code></pre>
  <p>I've been rolling my head around this problem for hours but still can't find any answers.</p>