|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6534
|
[C] Domande varie su strutture
Ciao ragazzi, ho un paio di domande sulle strutture C:
1)Data una struttura, come faccio a sapere quanti campi ha? 2) Come faccio a sapere il tipo di ogni campo? 3) Come faccio a prelevare il nome del campo? Ovviamente suppongo che non conosca nulla di questa struttura. Voglio creare una funzione che tratti una struttura generica, senza sapere a priori come è fatta. E' possibile? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No.
Almeno, non che io sappia. In fondo, a run time, se tu non conosci assolutamente nulla di quella struttura, puoi soltanto dire che è una zona contigua di memoria. Non credo sia possibile sapere nemmeno se ha più di un campo. ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Non hai alcun modo. Proprio nessuno
![]() Per di più, se contiene puntatori non puoi nemmeno dire che è una zona contigua di memoria... perchè quei dati stanno altrove. IMHO, potresti tentare una specie di auto-riflessività: le strutture che devono fornire queste informazioni avrebbero sicuramente un puntatore ad una regione di memoria void* chiamata type_id o qualcosa di simile. In questa regione potresti poi salvare in forma binaria le informazioni che ti serviranno in seguito. Non ho idea se possa funzionare però ![]() Forse col C++ e il polimorfismo sarebbe più facile. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() (sì, ho capito cosa intendevi, era solo per precisare
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Beh ma è una sfumatura importante... perchè se una struttura non contiene puntatori se ne può avere una identica semplicemente usando memcpy.
Al contrario, se ci sono puntatori fare la stessa cosa genera un disastro. Quindi per l'OP è anche abbastanza importante. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Potresti accompagnare la struttura con una stringa terminata da \0 posta in cima. La stringa potrebbe contenere la descrizione dei campi successivi
Certo la complessità nell'andare a recuperare la struttura sarebbe comunque notevole |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Tanto C non è un linguaggio precisamente elegante
![]() E poi (con la certezza che la stringa sta per prima) basterebbe fare cast del pointer a (char*) per ottenere il primo char della stringa. O no?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:05.





















