linux user group brescia

immagine del castello

Archivio della mailing list

Arrays of Variable Length

Maurizio Paolini paolini a dmf.bs.unicatt.it
Gio 11 Apr 2002 16:47:51 UTC
> From: Enrico Colombini <erix a erix.it>
> Subject: Re: Arrays of Variable Length
>
>
> >Mi spiegate che cosa intendete con "strutture a grandezza variabile"? 
>
> typedef struct S1 {
>   int tipo; // impostare a TIPO_S1
>   int a;
> } S1;
>
> typedef struct S2 {
>   int tipo; // impostare a TIPO_S2
>   int x;
>   int y;
>   double r;
> } S2;
>
> typedef struct Varia {
>   int tipo;
> } Varia;

In verita' io avevo in mente un'altra bruttura:

   struct S {
      ...
      double vec[0];
      }

da allocare con un "malloc (sizeof(struct S) + N * sizeof(double))"

e poi usare:  varS->vec[i]     (con i < N)

Invero mi sembrava di ricordare che il compilatore accettasse [] invece
di [0] (cosa che non migliora di granche' l'eleganza del tutto), 
invece si lamenta.  Magari i miei sono ricordi del vecchio C non ansi.

mp

>
> In questo modo puoi avere una funzione che riceve un puntatore a un oggetto
> di tipo Varia, e poi internamente fa un cast a S1* o S2* (sulla base del
> valore di 'tipo') e usa il resto della struttura.
> Roba da usare in caso di effettiva necessita' e sotto controllo medico...
> una volta mia moglie e' pure riuscita a convincermi che quella era la
> migliore soluzione a un certo problema.
>
>   .Erix.
>



Maggiori informazioni sulla lista Lug