Desidero essere in grado di definire una tupla che rappresenta gli argomenti necessari per altre macro.#define una tupla in C
Penso che il modo migliore per mostrare quello che voglio è quello di mostrare un esempio:
#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);
}
voglio OUTPUT(LED)
per poi essere ampliato in:
LED_DDR |= 1 << LED_PIN
Il problema che ho è quello di fare con l'ordine di espansione, e risultati nella seguente errore:
macro "OUTPUT" requires 3 arguments, but only 1 given
Questo è fo Utilizzare con un progetto AVR con hardware personalizzato dove ho definito LED
e altri componenti con un rispettivo LED_PORT
LED_DDR
e LED_PIN
.
Quindi voglio definire più macro che possono assumere questo LED e utilizzare gli argomenti appropriati per mappare nel modo più succinto possibile.
Ciò è possibile con il preprocessore C standard?
Mostra la definizione di 'LET_PIN' e' LET_PORT' e 'LET_DDR' e' OUTPUT'. Quindi * modifica la tua domanda * per migliorarla. –
Vorrei taggare questa domanda con [tag: c-preprocessore]. – Michas
Possiamo supporre che 'PORTB',' DDRB', 'PB7' siano costanti intere letterali? –