Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [C] Come lavorare con un parametro di tipo void

    Ciao a tutti,
    ho bisogno di un vostro aiuto perchè non so bene cosa fare.

    Il problema è questo:
    ho una funzione che chiamerò ins di tipo di ritorno void alla quale passo come parametro un puntatore ad una struttura che chiamerò cla.
    Cla al suo interno ha tutta una serie di primitive.

    codice:
    void ins (void *e /* e è ti tipo cla */)
    {
    
    }
    codice:
    struct cla
    {
     int size;
     int tot;
     .
     .
     .
    }
    All'interno della funzione ins devo modificare alcuni valori del parametro che mi è stato passato.
    Ma come faccio?
    Ho provato praticamente tutte le soluzioni possibili ma ho sempre ricevuto degli errori.
    Ad esempio se faccio cosi:
    codice:
    e->size = 10;
    gli errori che ricevo sono:
    1) "warning: dereferencing '*void' pointer"
    2) "request for member 'size' in something not a structure or union"


    Mi date una mano perpiacere??

    Grazie

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    void* è un puntatore generico che può puntare a qualsiasi cosa. Quindi il compilatore non ha modo di sapere cosa il programmatore voglia fare.

    Per usarlo occorre riportare il void* ad un tipo valido (cla* nel tuo caso)

    cla *pcla = (cla*) e;

    pcla->size ecc...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Dovresti scrivere

    ((struct cla *)e)->size = 10;

    ma, ovviamente, per evitare di ripeterlo tutte le volte che ti serve, ti devi appoggiare ad un puntatore del tipo corretto come ti ha detto shodan ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ok, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.