Autor Tema: #undef en tiempo de ejecucion  (Leído 2047 veces)

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

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
#undef en tiempo de ejecucion
« 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.
« Última modificación: 12 de Abril de 2012, 17:27:26 por IngRandall »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: #undef en tiempo de ejecucion
« Respuesta #1 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.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: #undef en tiempo de ejecucion
« Respuesta #2 en: 12 de Abril de 2012, 16:05:13 »
Aqui:

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

O aqui:

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

main(){
 ...
}

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: #undef en tiempo de ejecucion
« Respuesta #3 en: 12 de Abril de 2012, 16:05:38 »
Segunda opción.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: #undef en tiempo de ejecucion
« Respuesta #4 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  :(

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: #undef en tiempo de ejecucion
« Respuesta #5 en: 12 de Abril de 2012, 16:10:15 »
y si usas una variable en vez de un define?
"Nada es imposible, no si puedes imaginarlo"

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: #undef en tiempo de ejecucion
« Respuesta #6 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.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: #undef en tiempo de ejecucion
« Respuesta #7 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.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: #undef en tiempo de ejecucion
« Respuesta #8 en: 12 de Abril de 2012, 16:19:01 »
Osea es imposible cambiar un define en tiempo de ejecución, gracias por las respuestas.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: #undef en tiempo de ejecucion
« Respuesta #9 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 !

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: #undef en tiempo de ejecucion
« Respuesta #10 en: 12 de Abril de 2012, 21:35:03 »
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: #undef en tiempo de ejecucion
« Respuesta #11 en: 13 de Abril de 2012, 11:16:06 »
Excelente respuesta Suky !

Saludos !