古いコンパイラでも

void hoge(void){
 ...
 {
  for(int i=0; ...)
   ...
 }
 ...
ってやれば int i は実質 for のローカル変数扱いになるんじゃないの?