Some dark corners of C
<p><pre><code>    #define struct union
    #define else
</code></pre>
That's evil. I have to do it in someone's code some day just to have some fun.<p>But, apart from that, it's a really nice compilation. I didn't know about the compile time checks of array sizes, but I have a doubt. What if I pass to a method declared<p><pre><code>    int foo(int x[static 10])
</code></pre>
this pointer<p><pre><code>    int* x = (int*) calloc(20, sizeof(int));
</code></pre>
Does the compiler skip the check? Does it give me a warning?<p>EDIT: Funnily enough, in Mac it doesn't give any warning, neither for pointers nor for undersized arrays (ie, foo(w[5]) doesn't give a warning). And I've compiled with -std=c99 -pedantic -Wall.