title: why is it possible to use undefined struct in c
body: <pre><code>#include &lt;stdio.h&gt;
  
  int main()
  {
    printf("%d", sizeof(struct token *));
  }
  </code></pre>
  
  <p>The above code can be compiled and linked use gcc under Linux. Could anyone of you explain the thing behind the Scenes to me? I know the point take the fix size of memory, so the struct
  token is irrelevant to sizeof, but even turn on the warning option in gcc, no warnings about the "none exist" struct at all. The context for the question is that I'm reading some source code by others, I'm trying very very hard to find the definition of "struct token", but off course failed.</p>