When I have been studying C it was illegal C code. Well, it was long time ago. Maybe standart have been changed. Or it is just a gcc extension to C (gcc has plenty of them).
BTW function prototypes was not always part of C. IIRC some time ago you had to rewrite it as:
int main ( iArgC, apsqArgV )
char * apsqArgV;
char szMsg = "Not so!";
printf ( "Hello, world! This is cygwqin speaking.\n" );
printf ( "Now inside scope, msg is %s.\n", szMsg );
return ( 0 ); // Success is zero in Windows.