Es eficiente usar #define

Iniciado por anonimo12121, 3 Octubre 2012, 09:58 AM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

Me gustaría saber si es eficiente usar #define en este plan.
Código (cpp) [Seleccionar]
#define Bucle for(int x=0;x<10;x++)cout << x;
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

leosansan

#1
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. ;-) ;-) ;-) ;-) ;-) ;-)

anonimo12121

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.
Código (cpp) [Seleccionar]
#define f(x) cout << x;
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

leosansan

#3
Cita de: Xafi en  3 Octubre 2012, 13:01 PM
Código (cpp) [Seleccionar]
#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

Javier235

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; \
}

anonimo12121

ok gracias por la información!
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746