Bonjour,

Difficile de trouver un titre explicite pour ma question... Ce n'est pas très compliqué :

Dans mon code je déclare plusieurs variables les unes à la suite des autres :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
byte serverIP[] = { 192, 168, 123, 32 };
IPAddress ip(192, 168, 123, 177);
byte LumiereA = 205;
byte LumiereB = 3;
byte delayPingServer = 10;
byte mac[]= { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
Je voudrais que ces variables occupent un espace en RAM "contigu"

Voici un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
[01][02][03][04][05][06][07][08][09][0A][0B][0C][0D][0E][0F][10][11]
Les octets aux adresses 1 à 4 correspondent à serverIP[]
Les octets aux adresses 5 à 8 correspondent à ip
L'octet à l'adresse 9 correspond à LumiereA
L'octet à l'adresse 0A correspond à LumiereB
L'octet à l'adresse 0B correspond à delayPingServer
Les octets aux adresses 0C à 11 correspondent à mac

Vous allez me dire : pourquoi ?

Dans mon programme je vais avoir besoin de copier ces variables depuis et vers l'EEPROM
Je vais aussi avoir besoin de pouvoir les modifier avec une interface utilisateur.

Actuellement je dois gérer l'affichage, la saisie et la copie avec pas mal d'instructions et de switch-case ce qui aboutit à un code volumineux.

Si ces variables sont "à la suite", avec un pointeur je peux afficher, saisir et copier chaque octet de ce paquet de variable de façon plus efficace : par exemple pour tout copier ou tout affiche, une boucle for next avec une instruction suffit.

Comment faire cela de façon fiable, c'est à dire être certain que le compilateur place ces variables à des adresses qui se suivent ?

Je pense déclarer un buffer, et ensuite déclarer les variables en leur spécifiant une adresse relative dans ce buffer

Merci

A bientôt