Pour la variable counter :
Si je la retire du fichier globals.h et que je la défini dans le display.cpp donc sans "extern", ça marche mais je sais pas pourquoi.
Elle est défini dans dans globals, elle devrait etre vu dans display,..., commes les autres.
Pour white :
Si j’insère les librairies de l 'écran dans display.cpp, white est reconnu.
In file included from sketch_dec10e.ino:1:
global.h:16: error: 'Adafruit_SSD1306' does not name a type
sketch_dec10e.ino: In function 'void setup()':
sketch_dec10e:4: error: 'display' was not declared in this scope
sketch_dec10e:4: error: 'SSD1306_SWITCHCAPVCC' was not declared in this scope
sketch_dec10e.ino: In function 'void loop()':
sketch_dec10e:8: error: 'display' was not declared in this scope
sketch_dec10e:10: error: 'WHITE' was not declared in this scope
Tenez voici un petit exemple avec des PROGMEM, des structures et qui montre comment structurer les #include et les extern (et qui affiche le tout sur la console à 115200 bauds)
En PJ car il y a 3 fichiers:
le .ino qui est le programme, qui inclus un .h dans lequel on a déclaré des éléments structurants et les variables externes et enfin un .cpp qui définit et initialise les variables en question
le .ino et le .cpp importent le .h qui est la référence des choses à connaître
In file included from exempleExtern.ino:1:
varglob.h:8: error: use of enum 'situation_t' without previous declaration
varglob.h:8: error: expected unqualified-id before ':' token
varglob.h:15: error: 'situation_t' does not name a type
exempleExtern.ino: In function 'void setup()':
exempleExtern:17: error: 'const struct person_t' has no member named 'situation'
C'est normal, ou j'ai un problème de version de IDE Arduino, je suis en 1.0.6