expansión de la macro MPLABX

0

Estoy usando MPLABX v2.25 y XC32 compiler v1.33 en una Mac.

Tal vez no domino el uso del preprocesador, pero la ventana de expansión de macros en MPLABX parece producir resultados bastante inesperados.

Ejemplo-1:

#define PIBO TEST  
void ftest(void)  
{  
#if (PIBO == TEST)  
  printf("Hello");  
#endif  
}  

Resultado esperado: printf () debería aparecer en la ventana de expansión de macros
Resultado: printf () aparece en la ventana de expansión de macro

Hasta ahora todo bien.

Ejemplo-2:

#define PIBO FOOTEST  
void ftest(void)  
{  
#if (PIBO == TEST)  
    printf("Hello");  
#endif  
}  

Resultado esperado: printf () NO debe aparecer en la ventana de expansión de macros
Resultado: printf () aparece en la ventana de expansión de macro

Ejemplo-3:

void ftest(void)  
{  
#if (0)  
    printf("Hello");  
#endif  
}  

Resultado esperado: printf () no debería aparecer en la ventana de expansión de macros
Resultado: printf () no aparece en la ventana de expansión de macro

¿La ventana de expansión de macros de MPLAB X muestra fallos o es mi código o comprensión de cómo se supone que funciona?

    
pregunta quixote

1 respuesta

3

En C, los símbolos no definidos en el preprocesador se evalúan como 0 . Por lo tanto, sus dos primeros ejemplos se evalúan como 0 == 0 , lo cual es cierto.

Si usted

#define x 1

entonces

#define y 2

entonces (x == y) se evalúa como (1 == 2) , lo cual es falso.

    
respondido por el DoxyLover

Lea otras preguntas en las etiquetas