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
|