title: "int main (vooid)"? How does that work?
body: <p>I recently had to type in a small C test program and, in the process, I made a spelling mistake in the main function by accidentally using <code>vooid</code> instead of <code>void</code>.</p>
  
  <p>And yet it still worked.</p>
  
  <p>Reducing it down to its smallest complete version, I ended up with:</p>
  
  <pre><code>int main (vooid) {
      return 42;
  }
  </code></pre>
  
  <p>This does <em>indeed</em> compile (<code>gcc -Wall -o myprog myprog.c</code>) and, when run, it returns 42.</p>
  
  <p>How exactly is this valid code?</p>
  
  <hr>
  
  <p>Here's a transcript cut and pasted from my <code>bash</code> shell to show what I'm doing:</p>
  
  <pre><code>pax$ cat qq.c
  int main (vooid) {
      return 42;
  }
  
  pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq
  
  pax$ echo $?
  42
  </code></pre>