Retourner aux forums || Retourner au forum

Programmation.c : initialisation statique tableau

Posté par Matthieu C () le 14 août 2004
0
Bonjour,

existe-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).  

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.

peut être

Posté par Krunch (Jabber id, page perso, ) le 14/08/2004 à 14:20. (lien). Évalué à 3.

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

      Posté par Matthieu C () le 29/08/2004 à 18:48. (lien). Évalué à 2.

      merci beaucoup.

Revenir en haut de page || Retourner aux forums || Retourner au forum