Unless I am seriously mistaken in my understanding of prototypes, our version of gcc produces an error in what I believe is a correct program. Try the following: extern int foo ( short ); int foo(x) short x; { ; } I get a message that the argument doesn't match the prototype. Works fine if I use int in place of short. Anybody know if this has been fixed?