#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?