Forum Programmation.c initialisation statique tableau

Posté par  .
Étiquettes : aucune
0
14
août
2004
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
  • # peut être

    Posté par  (site web personnel) . É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.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: peut être

      Posté par  . É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  . Évalué à 2.

        merci beaucoup.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.