Uso del hashtag PIC32 en el pegado de tokens

0

La biblioteca pps.h de PIC32 contiene una función de preprocesador que dirige la entrada / salida de un periférico a ciertos pines del microcontrolador.

La función es:

#define PinSelOutput(grp,pin,fn)   OUT_PIN_PPS##grp##_##pin = OUT_FN_PPS##grp##_##fn    /**<Pin Select output bit*/ 

Lo que no puedo entender es la implementación de "## _" antes de "## pin". Pega la parte de la cuerda antes de "_" con "_", de alguna manera.

¿Hay una tabla con combinaciones de hashtag especiales que pueda verificar?

    
pregunta Lefteris

1 respuesta

2

Ya que pone "token peging" en su título, claramente ya tiene alguna idea de lo que hace ##; se llama el operador "token peging", que es algo que podría buscar en Google para obtener más información.

No debes pensar en "## pin" y "## _" como cosas separadas para entender; solo piense en "##" como un operador que une las cosas a cada lado.

Por ejemplo, si la macro se llama como PinSelOutput(1, 2, 3) , se expandirá de la siguiente manera:

OUT_PIN_PPS1_2 = OUT_FN_PPS1_3 /**<Pin Select output bit*/

Porque primero reemplazará "grp", "pin" y "fn" con los valores pasados a la macro, y luego "##" unirá las cosas en un solo token.

(Necesitas "##" porque no puedes simplemente decir algo como "OUT_PIN_PPSgrp_pin", que se interpretaría como un solo "token" (es decir, una sola palabra) y los valores de los parámetros no se insertarán).

    
respondido por el Glenn Willen

Lea otras preguntas en las etiquetas