C89/Visual C compatible

Note, some GCC platforms have broken alloca functions and require
"#define _alloca(size) __builtin_alloca(size)" . A non constant length auto
array is implemented with alloca in C99 under the hood. The other problems
were mixed declarations and statements.