Ich versuche, eine Reihe von Makros für eine Bibliothek zu erstellen, um digitale I/O auf einem eingebetteten Prozessor (GNU-Compiler) für neue Benutzer einfacher zu machen. Hier ist, was ich bisher habe:C-Makro-Erweiterung
[code]
#define 1 A4 // this is so that I can refer to I/O
#define 2 B5 // by reference number 1-55
// ****************************************************
// I/O #defines
// ****************************************************
#define OUTPUT(pin) JOIN(TRIS, pin) = 0
#define JOIN(a, b) (a ## b)
#define HIGH(pin) JOIN(R,pin) = 1
#define SWITCH3 1
#define LED3 2
OUTPUT(LED3);
HIGH(LED3);
[/code]
OUTPUT (LED3) sollte ergeben: (TRISA4) = 0; HIGH (LED3) sollte ergeben: (RA4) = 1;
aber was ich bekommen ist:
(TRIS1) = 0; (R1) = 1;
Kann mir jemand sagen, was ich falsch mache?
Ich habe eine Ahnung, dass Makros, die mit einer Nummer beginnen, eine schlechte Idee sind - oder nicht gültig. –
Niemals solche Definitionen verwenden: #define 1 A4 –