J'utilise le compilateur XC8 pour développer une petite application embarquée avec un PIC. Dans XC8 pour définir l'utilisation d'une broche (sortie ou entrée), le programmeur doit exécuter une instruction de ce type:Comment évaluer la virgule dans un #define
TRISAbits.RA0 = 1;
en particulier:
- TRIS dans le préfixe de registre (constant)
- A est le port
- bits est le suffixe (constant)
- RA0 est le nom de la broche
Ce que je veux faire est de définir toutes les broches avec un nom lisible par l'homme, comme:
#define LED_1 A,RA0
#define LED_2 A,RA1
#define SWITCH_1 B,RB5
...
Et définir des macros comme SET_OUTPUT
ou SET_INPUT
utilisés de cette façon: SET_OUTPUT(LED_1)
.
Ce que j'ai essayé de faire est de ces deux macros:
#define SET_INPUT(port, pin) TRIS ## port ## bits. ## pin ## = 0
cependant, la virgule à l'intérieur des constantes définies précédemment n'est pas développé et interprété comme un seul argument. J'ai également essayé:
#define SET_INPUT(X) SET_INPUT_(X ## "")
#define SET_INPUT_(port, pin) TRIS ## port ## bits. ## pin ## = 0
sans succès.
est essentiellement le contraire de cette question: Comma in C/C++ macro
Existe t-il une solution ou d'une façon plus commode de le faire?
Au début, vous dites qu'il devrait être '= 1', mais vous avez essayé' = 0' dans vos macros, ce qui est à ce sujet? –