Contante de type "tableau": est-ce que ca existe en C?

Contante de type "tableau": est-ce que ca existe en C? - C - Programmation

Marsh Posté le 31-08-2006 à 11:25:26    

Bonjour à tous, voici mon petit soucis :
 
 
 
A l'heure actuelle, j'initialise un tableau qui contient plusieurs valeurs numériques de la manière suivante:  
 

Code :
  1. unsigned long FirstLeaf[AFDXSCALAROIDLENGTH]={1, 3, 6, 1, 4, 1, 11111, 1, 1, 1, 1, 0};


 
Mais je trouve que ca fait crado et que ca n'est pas maintenable facilement (ces chiffres représentent un identifiant qui est répété plusieurs fois dans le code et qui peut changer).  
Donc, je voudrais créer une constante qui contiendrait la valeur d'init de ce tableau et juste remplir ce tableau avec cette constante.
 
Faire un truc du style  
 
Dans mon fichier ".h"

Code :
  1. #define MAVALEUR_INIT {1, 3, 6, 1, 4, 1, 11111, 1, 1, 1, 1, 0}


et dans le fichier .c:

Code :
  1. unsigned long FirstLeaf[AFDXSCALAROIDLENGTH];
  2. memcpy(&FirstLeaf[0], MAVALEUR_INIT, labonnetaille*sizeof(unsigned long));


Donc ma question est la suivante :  
Est-ce qu'il y a un moyen de définir une constante qui contient un tableau? (un truc ressemblant à  

Code :
  1. #define MAVALEUR_INIT {1, 3, 6, 1, 4, 1, 11111, 1, 1, 1, 1, 0}

)
 
 
Merci

Reply

Marsh Posté le 31-08-2006 à 11:25:26   

Reply

Marsh Posté le 31-08-2006 à 11:39:27    

as-tu essayé ?

Reply

Marsh Posté le 31-08-2006 à 13:41:19    

Oui, oui, j'ai essayé :
le compilo me dit:  
 
expected primary-expression before '{' token

Reply

Marsh Posté le 31-08-2006 à 14:19:08    

pierrot_lefou a écrit :

Donc, je voudrais créer une constante qui contiendrait la valeur d'init de ce tableau et juste remplir ce tableau avec cette constante.


Tu y étais presque :  

Code :
  1. #define MAVALEUR_INIT {1, 3, 6, 1, 4, 1, 11111, 1, 1, 1, 1, 0}


et dans le fichier .c:

Code :
  1. unsigned long FirstLeaf[AFDXSCALAROIDLENGTH] = MAVALEUR_INIT;


Si tu veux faire un init dynamique :  

Code :
  1. unsigned long FirstLeaf[AFDXSCALAROIDLENGTH];
  2. <...>
  3. {
  4.    static const unsigned long z[AFDXSCALAROIDLENGTH] = MAVALEUR_INIT;
  5.    memcpy (FirstLeaf, z);
  6. }


Message édité par Emmanuel Delahaye le 31-08-2006 à 14:22:43

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-08-2006 à 15:23:46    

Effectivement, j'ai testé et ca fonctionne correctement (compilation + fonctionnel).
 
Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

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