Go Down

Topic: Utilisation des directives de compilation (Read 207 times) previous topic - next topic

vidalv

Bonjour à tous,
j'aimerais savoir comment intégrés des directives de compilation dans un sketch Arduino
afin de faire un choix de compilation en fonction de clefs définies.

Par exemple, comment retranscrire en Arduino:
 
#define boolean MON_CHOIX = True     // Pas sur de la syntaxe !!!


void setup() {

..... Code ......

#if defined MON_CHOIX

...... Une/Des action(s) .....

#else

...... Une/Des Autre(s) action(s) .....

#endif

}

Dans mon exemple c'est toujours le code dans la partie #else qui s'exécute ....  ;D

Merci pour votre aide.

Vincent.

_pepe_

#1
Jun 14, 2018, 12:04 pm Last Edit: Jun 14, 2018, 12:08 pm by _pepe_
Bonjour

Si ça ne marche pas, c'est juste parce que cette ligne :

Code: [Select]
#define boolean MON_CHOIX = True     // Pas sur de la syntaxe !!!
est erronée.

La syntaxe de la directive #define, c'est ;

#define [le mot à trouver] [ce par quoi on le remplace]

Donc ici, ton code revient à définir et chercher le mot « boolean » et à le remplacer par « MON_CHOIX = True » dans la suite du code, ce qui ne correspond à l'évidence pas ce que tu souhaites.

Tu devrais plutôt essayer :

Code: [Select]
#define MON_CHOIX True
ou plus simplement (puisque tu n'utilises ensuite qu'un « #if defined ») :

Code: [Select]
#define MON_CHOIX

vidalv

Bonjour et merci _pepe_,

en effet, avec juste le #define ça fonctionne ! Super.

Question subsidiaire, est-ce que le "#else if" existe dans un "#if define" ?

ou ça se limite à #define, #else, #endif ....

Merci.

lesept

Bonjour
Où peut-on trouver une liste des directives de compilation acceptées par l'IDE Arduino ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

_pepe_

#4
Jun 14, 2018, 12:35 pm Last Edit: Jun 14, 2018, 12:35 pm by _pepe_
Question subsidiaire, est-ce que le "#else if" existe dans un "#if define" ?
Oui, ça existe, et ça s'écrit « #elif ... ».

biggil

Où peut-on trouver une liste des directives de compilation acceptées par l'IDE Arduino ?
Dans tout manuel de référence C++ ...

_pepe_

#6
Jun 14, 2018, 12:58 pm Last Edit: Jun 14, 2018, 01:08 pm by _pepe_
Où peut-on trouver une liste des directives de compilation acceptées par l'IDE Arduino ?
L'IDE Arduino utilise les chaînes de compilation GCC, qui possèdent une documentation en ligne très fournie. Il faut juste se référer à la bonne version, qui dépend du modèle de micro-contrôleur et de la version de l'IDE.

Par exemple, pour les micro-contrôleurs AVR 8 bits, la version 1.8.5 actuelle de l'IDE utilise AVR-GCC version 4.9.2. On pourra donc trouver ce qui concerne les directives du préprocesseur par ici, la liste étant par là.

NB: dans le détail, GCC fait parfois des écarts par rapport aux langages standards, et AVR-GCC présente également quelques particularités (documentées) par rapport à GCC.

vidalv


Go Up