Retourner aux forums || Retourner au forum
Programmation.c : initialisation statique tableau
Posté par Matthieu C () le 14 août 2004existe-t-il un moyen d'initialiser les gros tableau statiquement en C, c'est a dire pouvoir dire que tout le tableau doit etre initialiser avec une valeur particuliere ou encore mieux pouvoir lui precisser la valeur de certains elements et initialiser le reste a une autre constante.
Sinon existe t il une extention gcc pour le faire ?
Merci
Matthieu
> Lire le message (3 commentaires, moyenne: 3).
peut être
Si ton tableau est vraiment gros, le binaire risque d'être aussi assez gros. Il vaut peut-être mieux allouer la mêmoire dynamiquement au début du programme. Avec memset(3) ou memcpy(3) ça devrait être assez rapide. S'il n'est pas si gros que ça, tu peux le taper à la main (ou avec un petit coup de shell).
Sinon tu dois pouvoir faire ça avec un macro directement généré par le shell genre:
gcc -DBIG_TABLE=`for (( i=0; i < 1000 ; i++)) ; do echo -n '42, ' ; done` foo.c
et dans foo.c:
static int *big_table = { BIG_TABLE };
Ca doit aussi marcher dans un Makefile. Pour que quelques éléments soient initialisés différement, ben tu t'amuses à rajouter des if dans ton script shell. C'est pas très propre mais ça devrait marcher.
Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
-
[^]Re: peut être
Posté par Raphael Monrouzeau () le 14/08/2004 à 23:01. (lien). Évalué à 4.Si tu veux que ton tableau soit initialise avec des 0 (attention NULL peut etre different de 0) alors declare le en global ou statique, c'est le comportement par defaut.
Si tu utilises un gcc (assez) recent il y a des operatieurs specialement prevu pour:
Et tu peux apres pour certaines cases ecraser leur valeur:
int my_tab[65536] = {
[0 ... 65535] = 32, // gcc seulement, ajout au C99
[32767] = 64, // portable, C99
[16384] = 64 //
};
Le tout tres bien documente dans info gcc.-
[^]Re: peut être
-
Revenir en haut de page || Retourner aux forums || Retourner au forum


Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.