Tableaux de structure constant

Tableaux de structure constant - C - Programmation

Marsh Posté le 14-06-2007 à 20:30:45    

Bonjour,  
 
J'ai une petite question en C, je voudrais savoir si il est possible de remplacer la ligne 17 par la ligne 4.
De cette facon, si je modifie la valeur de la chaine MyStr, mon tableau de structure est mis à jour automatiquement.
 
Si vous avez des idées ...  
 

Code :
  1. #include <stdio.h>
  2. /* Definition des constantes */
  3. #define MyStr "CHAINE1"
  4. /* Définitions des structures */
  5. typedef struct
  6. {
  7.     unsigned char Data[100];
  8.     unsigned int Index;
  9. }MyStruct;
  10. /* Tableau de structure */
  11. const MyStruct Tableau[] =
  12. {
  13.     {
  14.        "CHAINE1",
  15.        0,
  16.     },
  17.     {
  18.        "CHAINE2",
  19.        1,
  20.     }
  21. };
  22. int main(void)
  23. {
  24.        ...
  25.        return 0;
  26. }


Message édité par phdenis le 14-06-2007 à 20:31:59
Reply

Marsh Posté le 14-06-2007 à 20:30:45   

Reply

Marsh Posté le 14-06-2007 à 20:31:34    

Merci d'avance ... :)


Message édité par phdenis le 14-06-2007 à 20:33:27
Reply

Marsh Posté le 14-06-2007 à 20:35:24    

Oui, c'est le but de telles macros : tu les mets dans un .h à part, tu lui donnes un nom parlant et normalisé, et tu places un commentaire explicatif avant toutes les variantes, genre :

/* Les differentes options servant a <insert here commentaire explicatif long, instructif et divertissant> */
#define ID_OPTION_BLABLA "truc"
#define ID_OPTION_TUPEUXPASTAISTE "taiste"
#define ID_OPTION_FREE_KADREG "goatse.cx"

 

Et dans ton code tu peux utiliser librement ID_OPTION_BLABLA, ID_OPTION_TUPEUXPASTAISTE ou ID_OPTION_FREE_KADREG, le compilateur fera automatiquement un copier-coller avec les valeurs définies.


Message édité par Elmoricq le 14-06-2007 à 20:36:02
Reply

Marsh Posté le 14-06-2007 à 23:38:32    

Merci pour la réponse ... J'avais essayer cette solution mais j'avais fait une faute de frappe :(

Reply

Marsh Posté le 21-06-2007 à 07:25:55    

phdenis a écrit :

Merci pour la réponse ... J'avais essayer cette solution mais j'avais fait une faute de frappe :(


Tu peux même remplacer "char Data[100]" par "char *Data" et au lieu de recopier tes chaînes (déjà en mémoire) dans ta structure, le compilo ne fera que recopier l'adresse des zones mémoires dans ta structure => gain de place


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 21-06-2007 à 12:32:48    

Merci pour l'info mais la structure m'est imposée donc je suis obligé d'utilser un char Data[100].
 
Mais je le note pour plus tard.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed