El otro día, mientras aprendía Python, me fijé en foreach y range. Me pregunté si en C se podía tener una expresión parecida.
Y llegué a este ejemplo básico.
#include <stdio.h>
// Desde 1 hasta top. Haz lo que quiereas con el valor en medio ------------------------------
#define foreach(var, top) for(int foreach_var = (top); var = f(foreach_var); foreach_var = 0)
int f(unsigned number) {
static unsigned top;
static unsigned actual;
if(number != 0) {
top = number;
actual = 0;
}
if(actual == top)
return 0;
return ++actual;
}
// -------------------------------------------------------------------------------------------
int main(){
int x;
/* Nueva funcionalidad */
foreach(x, 5) {
}
}
Lo dicho, es básico, pero se podría ir mejorando o hacer otras cosas, por supuesto.