#define uma tupla em C

Quero poder definir uma tupla que represente os argumentos necessários para outras macros.

Eu acho que a melhor maneira de mostrar o que eu quero é mostrar um exemplo:

#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);
}

eu queroOUTPUT(LED) para então ser expandido para:

LED_DDR |= 1 << LED_PIN

O problema que recebo está relacionado à ordem de expansão e resulta no seguinte erro:

A macro "SAÍDA" requer 3 argumentos, mas apenas 1 dado

Isto é para uso com um projeto AVR com hardware personalizado, onde eu definiLED e outros componentes com uma respectivaLED_PORT LED_DDR eLED_PIN.

Desejo então definir mais macros que possam usar esse LED e usar os argumentos apropriados para mapear da maneira mais sucinta possível.

Isso é possível com o pré-processador C padrão?

questionAnswers(1)

yourAnswerToTheQuestion