TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: IngRandall en 12 de Abril de 2012, 15:48:25

Título: #undef en tiempo de ejecucion
Publicado por: IngRandall en 12 de Abril de 2012, 15:48:25
Hola amigos del foro, me surgido una duda, quisiera saber si uno puede utilizar #undef en tiempo de ejecución para cambiar un define.

Mi codigo es el siguiente:

Código: [Seleccionar]
      #define prueba 1

if (SW1==0){
                while(SW1==0);
                //LED_Rx_U1 = 0;

                if (prueba==1){
                    if(USBUSARTIsTxTrfReady())
                    {
                        char data[] = "prueba = 1 se dejo igual";
                        //putsUSBUSART(data);
                        mUSBUSARTTxRam((BYTE*)data, sizeof(data));
                    }
                }
                else{
                    #undef prueba
                    #define prueba 1

                    char data[] = "prueba = 0 se cambio a 1";
                        //putsUSBUSART(data);
                    mUSBUSARTTxRam((BYTE*)data, sizeof(data));
                }
        }

        if (SW2==0){
            while(SW2==0);
            //LED_Rx_U1 = 0;

            if (prueba==0){
                if(USBUSARTIsTxTrfReady())
                {
                    char data[] = "prueba = 0 se dejo igual";
                    //putsUSBUSART(data);
                    mUSBUSARTTxRam((BYTE*)data, sizeof(data));
                }
            }
            else{
                #undef prueba
                #define prueba 0

                char data[] = "prueba = 1 se cambio a 0";
                    //putsUSBUSART(data);
                mUSBUSARTTxRam((BYTE*)data, sizeof(data));
            }
        }

Pero no funciona, no me cambia el define, quisiera saber si se puede o si estoy haciendo algo mas.
Título: Re: #undef en tiempo de ejecucion
Publicado por: migsantiago en 12 de Abril de 2012, 16:01:42
Hola, no sé si se pueda usar #undef o #define ya dentro de una función. Prueba colocándolos fuera.
Título: Re: #undef en tiempo de ejecucion
Publicado por: IngRandall en 12 de Abril de 2012, 16:05:13
Aqui:

Código: [Seleccionar]
main(){
 #define ...
}

O aqui:

Código: [Seleccionar]
#define...

main(){
 ...
}
Título: Re: #undef en tiempo de ejecucion
Publicado por: migsantiago en 12 de Abril de 2012, 16:05:38
Segunda opción.
Título: Re: #undef en tiempo de ejecucion
Publicado por: IngRandall en 12 de Abril de 2012, 16:07:48
Pues en la segunda opcion si se puede, pero yo eso no se puede cambiar cuando el programa a esta corriendo, yo quiero ver si se puede cuando el programa ya esta corriendo, aunque al parece con el ejemplo que puse al principio no se puede  :(
Título: Re: #undef en tiempo de ejecucion
Publicado por: rivale en 12 de Abril de 2012, 16:10:15
y si usas una variable en vez de un define?
Título: Re: #undef en tiempo de ejecucion
Publicado por: IngRandall en 12 de Abril de 2012, 16:12:38
Claro, con una variable si funciona perfectamente, yo solo pregunto por un define, para ver si alguno ya antes lo ha intentado, gracias.
Título: Re: #undef en tiempo de ejecucion
Publicado por: migsantiago en 12 de Abril de 2012, 16:17:39
Los #define y #undef son declaraciones del preprocesador C, es decir, el programa final no las ve como variables.

Tienes que usar una variable como dice Rivale.
Título: Re: #undef en tiempo de ejecucion
Publicado por: IngRandall en 12 de Abril de 2012, 16:19:01
Osea es imposible cambiar un define en tiempo de ejecución, gracias por las respuestas.
Título: Re: #undef en tiempo de ejecucion
Publicado por: RICHI777 en 12 de Abril de 2012, 16:35:34
Hola, como te comento MIg, el define/undef/ifdef etc son usadas por el preprocesador ( primer procesado cuando se compila un archivo ) este crea un gran archivo de texto pegando todo, incluso hasta los include y eso es lo que se compila, en tiempo de ejecución no queda nada de eso...

Saludos !
Título: Re: #undef en tiempo de ejecucion
Publicado por: Suky en 12 de Abril de 2012, 21:35:03
http://es.wikipedia.org/wiki/Preprocesador_de_C   ;-)
Título: Re: #undef en tiempo de ejecucion
Publicado por: RICHI777 en 13 de Abril de 2012, 11:16:06
Excelente respuesta Suky !

Saludos !