TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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:
#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.
-
Hola, no sé si se pueda usar #undef o #define ya dentro de una función. Prueba colocándolos fuera.
-
Aqui:
main(){
#define ...
}
O aqui:
#define...
main(){
...
}
-
Segunda opción.
-
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 :(
-
y si usas una variable en vez de un define?
-
Claro, con una variable si funciona perfectamente, yo solo pregunto por un define, para ver si alguno ya antes lo ha intentado, gracias.
-
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.
-
Osea es imposible cambiar un define en tiempo de ejecución, gracias por las respuestas.
-
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 !
-
http://es.wikipedia.org/wiki/Preprocesador_de_C ;-)
-
Excelente respuesta Suky !
Saludos !