erlug
[Top] [All Lists]

[Erlug] Re: C datatype

To: "erlug" <erlug@xxxxxxxxxxxxxx>
Subject: [Erlug] Re: C datatype
From: "Gaetano Bigliardi" <gaetano.bigliardi@xxxxxxxxx>
Date: Wed, 9 Oct 2002 10:08:07 +0200
> Ok grazie, molto chiari tutti e due quidni i C non si può e se voglio
> proprio farlo devo usare il C++, però mi chiedevo se potevo usare questa
> specie di work-around, cioè utilizzare un puntatore void per poi castarlo al
> tipo che mi serve all'occorrenza, faccio un esempio, spero di non dire una
> cazzata enorme:
> 
> #include <stdio.h>
> 
> void func(void *x);
> 
> main
> {
>       int i;
>       func(&i);
> }
> 
> void func(void *x)
> {
>       int c = (int)*x; // se è vero che l'indirezione
>                            // di in indirizzo restituisce
>                            // il valore contenuto nell'indirizzo
>                            // questo dovrebbe andare
>                            // ma il compilatore dice:
>                            // aggregate value used where an integer
>                            // was expected
>                            // dov'è che sbaglio???
>       printf("%d", c);
> }

  prima devi effettuare il cast da void* a int* e poi puoi utilizzare
l'operatore di indirezione. Quindi il programma diventa:

void func(void *x)
{
  int c = *(int *)x;
  printf("Ora funziona: c = %d", c);
}

  Gaetano



<Prev in Thread] Current Thread [Next in Thread>