You can get the error
'for' loop initial declaration used outside C99 mode
if you try to declare a variable inside a for loop without turning on
C99
mode.
Back in the old days, when dinosaurs roamed the earth and programmers used punch cards, you were not allowed to declare variables anywhere except at the very beginning of a block.
ERROR IN NON-C99 MODE
for (int i = 0; i<10; i++) { printf("i is %d\n", i); }
CORRECT
int i; for (i = 0; i<10; i++) { printf("i is %d\n", i); }
ANOTHER WAY
You can also compile with the C99 switch set. Put -std=c99 in the compilation line:
gcc -std=c99 foo.c -o foo