Foros del Web » Programación para mayores de 30 ;) » C/C++ »

macros

Estas en el tema de macros en el foro de C/C++ en Foros del Web. hola todos, en mi libro viene esta macro: #define getchar() getc ( stdin ) solo quiero saber como funciona esto, es que si la pongo ...
  #1 (permalink)  
Antiguo 04/08/2010, 14:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
macros

hola todos, en mi libro viene esta macro:

#define getchar() getc ( stdin )

solo quiero saber como funciona esto, es que si la pongo en el programa funciona igual que si no lo pusiera, osea que para que el uso de esa forma si la funcion getchar() ya esta en estdio.h

gracias
  #2 (permalink)  
Antiguo 04/08/2010, 14:35
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: macros

El define es una herramienta muy util para declarar constantes y definicion simples.

Antes de compilar, se reemplazan cada nombre por su definicion. En tu caso seria getchar() por getc(stdin). El porque usa esa macro lo desconosco. De serguro debe ser un ejemplo practico de como funciona el #define.
  #3 (permalink)  
Antiguo 04/08/2010, 14:37
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

ok, ya mas o menos entendi, gracias, jejeje
  #4 (permalink)  
Antiguo 04/08/2010, 14:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

oye una pregunta mas, cuando es recomendable utilizar las macros?????
  #5 (permalink)  
Antiguo 04/08/2010, 14:43
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: macros

Cuando tienes ciertos numeros que durante todo un programa no cambia, pero si te gustaria cambiarlo antes de compilar para probar cosas. Por ejemplo el tamaño de un array.

Tambien puedes definir funciones pequeñas. Rapidas y elegantes. Pero en verdad, por lo general, todo lo que haces lo puedes hacer con funciones. Pero Creo que se usan estas cosas, porque a veces generar una funcion y el llamado a esa funcion gastan memoria.

Pero eso ya hay que investigar mas.... que no viene al caso....
  #6 (permalink)  
Antiguo 04/08/2010, 14:47
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

ok gracias, otra duda, por ejemplo tengo este programita de macros, funciona bien, ahora quiero meterle else if ( #elif ), de que manera lo trabajo????? es que no encuentro como acomodarlo


Código C++:
Ver original
  1. #include <stdio.h>
  2. #define NULL
  3.  
  4.  
  5. int main ()
  6.  
  7. {
  8.  
  9. #ifdef NULL
  10.     printf ("definido\n");
  11. #else
  12.     printf ("no");
  13.  
  14. #endif
  15.  
  16.  
  17. return 0;
  18.  
  19. }

por que podria poner esto pero creo que no es correcto por que no compila

Código C++:
Ver original
  1. #include <stdio.h>
  2. #define HOLA
  3.  
  4.  
  5. int main ()
  6.  
  7. {
  8.  
  9. #ifdef NULL
  10.     printf ("definido\n");
  11. #elif
  12. #ifdef HOLA
  13.     printf ("hola");
  14. #else
  15.     printf ("nada definido");
  16. #endif
  17.  
  18.  
  19. return 0;
  20.  
  21. }
  #7 (permalink)  
Antiguo 04/08/2010, 14:49
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

a mira, ya no gracias, ya supe como jejejej

Código C++:
Ver original
  1. #include <stdio.h>
  2. #define HOLA
  3.  
  4.  
  5. int main ()
  6.  
  7. {
  8.  
  9. #ifndef NULL
  10.     printf ("definido\n");
  11. #elif defined HOLA
  12.     printf ("hola");
  13. #else
  14.     printf ("nada definido");
  15. #endif
  16.  
  17.  
  18. return 0;
  19.  
  20. }
  #8 (permalink)  
Antiguo 04/08/2010, 14:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

hola otra pregunta, de que me podria servir el activar y descativar codigo que no debe compilarse???? como este, cuando lo activo con 1 se imprime y con 0 no, pero de que me podria servir??? gracias

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.  
  7. #if 0
  8.     printf ("hola"); //codigo que no debe compilarse
  9. #endif
  10.  
  11.  
  12.  
  13. return 0;
  14.  
  15. }
  #9 (permalink)  
Antiguo 04/08/2010, 15:04
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: macros

Para generar codigo a grandes escalas. Y por si estas probando cosas y hay modulos que no necesitas.... Tambien se usa cuando tenes en un proyecto grandes varias archivos de cabezera (.h) que definene varias veces las mismas cosas.Y a la hora de compilar solo se necesita una vez. Entonces el compilador asi la define una sola vez.
Yo la he usado una sola vez, en un codigo de un mini sistema operativo.
  #10 (permalink)  
Antiguo 04/08/2010, 15:07
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

a ok gracias, oye hice este pequeñito programa usando #error ( directiva ), segun yo es solo para que en los mensajes de compilacion me salga el error que escribo no?????

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main ()
  4.  
  5. {
  6.  
  7. #ifdef NULL
  8.     #error 1- error de programa
  9. #endif
  10.  
  11. return 0;
  12.  
  13. }

gracias
  #11 (permalink)  
Antiguo 04/08/2010, 15:07
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: macros

también cuando quieres hacer tu programa multiplataforma pero hay funciones ligadas a una plataforma son muy utiles
  #12 (permalink)  
Antiguo 04/08/2010, 15:38
 
Fecha de Ingreso: agosto-2010
Mensajes: 153
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: macros

ok gracias por tu aporte se ve que eres inteligente, jeje, mira ahora tengo otra duda, esta la directiva #line, en que parte del programa va, segun se es para dar numeracion a los mensajes del compilador, y podemos incluirle el nombre del archivo "mio.c", esto me imagino para crear mis propias funciones no???? estoy medio confuso con esto, como se aplica o que ondas gracias

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3.  
  4. int main ()
  5.  
  6. {
  7.  
  8. #line 100 "tadeo.c"
  9.  
  10. return 0;
  11.  
  12. }

Etiquetas: macros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:46.