Erreur de compilation ‘boolean’ does not name a type

L'erreur de compilation - introduction
Il y a un moment déjà que j'utilise et réutilise un même bout de code.
Pour une fois, j'avais décidé de le copier dans mon nouveau projet en utilisant un fichier séparé du projet (un nouvel onglet).
J'ai donc ajouté un onglet "ButtonTools.h" dans lequel j'ai copier mes fonctions et routines.
Dans mon programme principal (le fichier pde), j'ai ajouté une instruction #include en début de fichier pour inclure "ButtonTools.h" dans le processus de compilation.

#include "ButtonTools.h"

Cependant, en compilant mon projet, j'obtiens les messages d'erreur suivants issus de mon nouveau fichier "ButtonTools.h". 
Parmi ces messages, il y a des problèmes de déclaration de type comme:
‘boolean’ does not name a type
ou
‘byte’ does not name a type

Détails des messages d'erreur:
In file included from ArduinoCar_Test_BtnInterface.cpp:4:
ButtonTools.h:25: erreur: ‘boolean’ does not name a type
ButtonTools.h:26: erreur: ‘byte’ does not name a type
ButtonTools.h: In function ‘buttonData attachButton(int)’:
ButtonTools.h:35: erreur: ‘LOW’ was not declared in this scope
ButtonTools.h:35: erreur: too many initializers for ‘buttonData’
ButtonTools.h:36: erreur: ‘INPUT’ was not declared in this scope

Cause de l'erreur
Cette erreur est produite par le compilateur parce qu'il ne sait pas résoudre les type "boolean" ou "byte".
Ces types sont issus du framework "wired" utilisé par compilateur de L'IDE Arduino.
Ces types sont donc spécifiques à la plateforme Arduino (Framework Wired) et non au compilateur C++ utilisé par l'IDE Arduino.

Solution
Il faut indiquer au compilateur C++ où il trouvera la définition du type boolean ou byte du Framework "Wired".
Il faut donc modifier le fichier "ButtonTools.h" (dans mon cas) pour ajouter une instruction #include vers "WConstants.h" dans les premières lignes du fichier.
WConstants correspondant à la définition des constantes du Framework Wired. 

#include "WConstants.h" 

Post-Scriptum
Le fait de créer un projet Arduino (fichier ".pde") incluant un fichier ".h" qui lui même inclus "WConstants.h" peut être la source d'une autre erreur de compilation dans le fichier principal (fichier ".pde").
Je vous conseille donc lire l'article "Erreur de compilation "unqualified-id before ‘double’"" si vous rencontrez un message d'erreur similaire a:
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/WProgram.h:6,
                 from ArduinoCar_Test_BtnInterface.cpp:18:
/usr/lib/gcc/avr/4.3.5/../../../avr/include/math.h:426: erreur: expected unqualified-id before ‘double’
/usr/lib/gcc/avr/4.3.5/../../../avr/include/math.h:426: erreur: expected `)' before ‘double’
/usr/lib/gcc/avr/4.3.5/../../../avr/include/math.h:426: erreur: expected `)' before ‘double’

Aucun commentaire