Me gustaría saber si es eficiente usar #define en este plan.
#define Bucle for(int x=0;x<10;x++)cout << x;
Según tengo entendido, al compilar el programa, se sustituye en el código los define por sus expresiones correspondientes. La ventaja que le veo es a la hora de modificar un código, que con algunas variables o expresiones sólo hay que cambiarlas una vez en el define , sin tener que recorrer el código en busca de ellas para cambiarlas en cada sitio
P;D Con esa foto podrías llamarteWalter White en lugar de Xafi..... es una broma ehhhhhh.
Saludos!, y perdon por el post anterior, le dí a una tecla y se publico antes de escribir. ;-) ;-) ;-) ;-) ;-) ;-)
Ya jaja es uno de mis personajes favoritos pero antes esta Iron man "stark"
respeto a lo que dices no lo entiendo muy bien
creo que esto también se puede hacer.
#define f(x) cout << x;
Cita de: Xafi en 3 Octubre 2012, 13:01 PM
#define f(x) cout << x;
CitarExacto. Y lo que te comenté, cuando el compilador va a a ejecutar el código, previamente hace una sustitución de todos los define por sus valores correspondientes. Es decir,antes de ejecutar el código, donde tengas puesto f() él pondrá cout << x.
En el enlace http://es.wikipedia.org/wiki/C%C3%B3digo_objeto creo que correspondería a Traducción
Siempre es eficiente y se puede hacer de todo, pero no siempre es legible. Fijate lo que es para debugging y esas cosas.
Mira un ejemplo de la expresividad (extraído de bstring.h que la podés buscar en http://bstring.sourceforge.net/):
#define bvformata(ret, b, fmt, lastarg) { \
bstring bstrtmp_b = (b); \
const char * bstrtmp_fmt = (fmt); \
int bstrtmp_r = BSTR_ERR, bstrtmp_sz = 16; \
for (;;) { \
va_list bstrtmp_arglist; \
va_start (bstrtmp_arglist, lastarg); \
bstrtmp_r = bvcformata (bstrtmp_b, bstrtmp_sz, bstrtmp_fmt, bstrtmp_arglist); \
va_end (bstrtmp_arglist); \
if (bstrtmp_r >= 0) { /* Everything went ok */ \
bstrtmp_r = BSTR_OK; \
break; \
} else if (-bstrtmp_r <= bstrtmp_sz) { /* A real error? */ \
bstrtmp_r = BSTR_ERR; \
break; \
} \
bstrtmp_sz = -bstrtmp_r; /* Doubled or target size */ \
} \
ret = bstrtmp_r; \
}
ok gracias por la información!