#define una tupla en C
Quiero poder definir una tupla que represente los argumentos que necesitan otras macros.
Creo que la mejor manera de mostrar lo que quiero es mostrar un ejemplo:
#include <avr/io.h>
#define LED_PORT PORTB
#define LED_DDR DDRB
#define LED_PIN PB7
#define LED LED_PORT, LED_DDR, LED_PIN
#define OUTPUT(port, ddr, pin) ddr |= 1 << pin
void main(void) {
OUTPUT(LED);
}
yo quieroOUTPUT(LED)
para luego ser expandido en:
LED_DDR |= 1 << LED_PIN
El problema que obtengo tiene que ver con el orden de expansión y da como resultado el siguiente error:
La macro "SALIDA" requiere 3 argumentos, pero solo 1 dado
Esto es para usar con un proyecto AVR con hardware personalizado donde he definidoLED
y otros componentes con un respectivoLED_PORT
LED_DDR
yLED_PIN
.
Luego quiero definir más macros que puedan tomar este LED y usar los argumentos apropiados para mapear de la manera más sucinta posible.
¿Es esto posible con el preprocesador C estándar?