Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 3 Octubre 2012, 09:58 am



Título: Es eficiente usar #define
Publicado por: anonimo12121 en 3 Octubre 2012, 09:58 am
Me gustaría saber si es eficiente usar #define en este plan.
Código
  1. #define Bucle for(int x=0;x<10;x++)cout << x;


Título: Re: Es eficiente usar #define
Publicado por: leosansan en 3 Octubre 2012, 11:45 am
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. ;-) ;-) ;-) ;-) ;-) ;-)


Título: Re: Es eficiente usar #define
Publicado por: anonimo12121 en 3 Octubre 2012, 13:01 pm
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
  1. #define f(x) cout << x;


Título: Re: Es eficiente usar #define
Publicado por: leosansan en 3 Octubre 2012, 13:13 pm
Código
  1. #define f(x) cout << x;
Citar
Exacto. 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


Título: Re: Es eficiente usar #define
Publicado por: Javier235 en 3 Octubre 2012, 13:51 pm
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/):

Código
  1. #define bvformata(ret, b, fmt, lastarg) { \
  2. bstring bstrtmp_b = (b); \
  3. const char * bstrtmp_fmt = (fmt); \
  4. int bstrtmp_r = BSTR_ERR, bstrtmp_sz = 16; \
  5. for (;;) { \
  6. va_list bstrtmp_arglist; \
  7. va_start (bstrtmp_arglist, lastarg); \
  8. bstrtmp_r = bvcformata (bstrtmp_b, bstrtmp_sz, bstrtmp_fmt, bstrtmp_arglist); \
  9. va_end (bstrtmp_arglist); \
  10. if (bstrtmp_r >= 0) { /* Everything went ok */ \
  11. bstrtmp_r = BSTR_OK; \
  12. break; \
  13. } else if (-bstrtmp_r <= bstrtmp_sz) { /* A real error? */ \
  14. bstrtmp_r = BSTR_ERR; \
  15. break; \
  16. } \
  17. bstrtmp_sz = -bstrtmp_r; /* Doubled or target size */ \
  18. } \
  19. ret = bstrtmp_r; \
  20. }
  21.  


Título: Re: Es eficiente usar #define
Publicado por: anonimo12121 en 3 Octubre 2012, 14:14 pm
ok gracias por la información!