program
{
- int i;
+ int i,j=1;
- echo("for_range(i,0,1)");
- for_range(i,0,1) printf(" [%d]",i);
+ echo("Just plain vanilla auto-increment:\tfor_range(i,1,5)");
+ for_range(i,1,5)
+ {
+ printf(" [%d]",i);
+ }
print("");
- echo("for_range(i,1,0)");
- for_range(i,1,0) printf(" [%d]",i);
+ echo("Single-evaluation of macro argument:\tj=1; for_range(i,0,j++)");
+ for_range(i,0,j++)
+ {
+ printf(" [%d]",i);
+ }
print("");
- echo("for_range(i,1,1)");
- for_range(i,1,1) printf(" [%d]",i);
+ echo("Just plain vanilla auto-decrement:\tfor_range(i,1,0)");
+ for_range(i,1,0)
+ {
+ printf(" [%d]",i);
+ }
print("");
- echo("for_range(i,1,5)");
- for_range(i,1,5) printf(" [%d]",i);
+ echo("Single iteration is possible too:\tfor_range(i,1,1)");
+ for_range(i,1,1)
+ {
+ printf(" [%d]",i);
+ }
print("");
- echo("for_range(i,5,1)");
- for_range(i,5,1) printf(" [%d]",i);
+ echo("Yet another example of macro safety:\tj=2; for_range(i,5,--j)");
+ for_range(i,5,--j)
+ {
+ printf(" [%d]",i);
+ }
+ print("");
+
+ echo("Nesting of this macro seems to be safe:\tfor_range(i,1,3) for_range(j,3,1)");
+ for_range(i,1,3)
+ {
+ for_range(j,3,1)
+ {
+ printf(" [%d,%d]",i,j);
+ }
+ }
print("");
}