| Precedente :: Successivo | 
	
	
		| Autore | Messaggio | 
	
		| saetta Eroe in grazia degli dei
 
  
 
 Registrato: 25/02/08 11:52
 Messaggi: 129
 
 
 | 
			
				|  Inviato: 18 Set 2008 12:10    Oggetto: [c] print personalizzata |   |  
				| 
 |  
				| Ciao, domandina-fantasia... Se ho 3  struct: a, b, c ovviamente diverse e volessi però implementare una funzione di stampa unica per le 3, come faccio a distinguere con certezza che si tratti di una piuttosto che di un'altra?
 
  	  | Codice: |  	  | int my_print( parametro???)/*potrebbe essere un void *   */
 {
 se (parametro == struct a)
 {
 stampa a->campo_1;
 ...
 stampa a->campo_n;
 }
 
 se (parametro == struct b)
 {
 stampa b->campo_1;
 ...
 stampa b->campo_n;
 }
 
 se (parametro == struct c)
 {
 stampa c->campo_1;
 ...
 stampa c->campo_n;
 }
 }
 | 
 
 in java avrei detto "if(parametro instanceof struct a)", giusto???
 In c, non so come fare tale controllo, e non credo di potermi basare sull'operatore sizeof in quanto 2 strutture potrebbero anche avere lo stesso risultato "sizeof", difficile, ma non impossibile.
 GRAZIE!!!
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| freemind Supervisor sezione Programmazione
 
  
  
 Registrato: 04/04/07 21:28
 Messaggi: 4643
 Residenza: Internet
 
 | 
			
				|  Inviato: 18 Set 2008 14:20    Oggetto: |   |  
				| 
 |  
				| ANSI C purtroppo non fornisce nessuna funzione e nessun operatore per stabilire il tipo di una variabile. 
 Secondo me fai prima a scrivere tre funzioni differenti, una per ogni tipo di struct
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| chemicalbit Dio maturo
 
  
  
 Registrato: 01/04/05 18:59
 Messaggi: 18597
 Residenza: Milano
 
 | 
			
				|  Inviato: 18 Set 2008 19:48    Oggetto: |   |  
				| 
 |  
				| O se proprio vuoi avere una funzione sola, 	  | freemind ha scritto: |  	  | Secondo me fai prima a scrivere tre funzioni differenti, una per ogni tipo di struct | 
 
 puoi passare alla funzione un'altra variabile che indichi quale tipo di struct sia,
 e poi differenziare con uno switch o altro modo.
 
 Ma non so quanto ne valga la pena.
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| freemind Supervisor sezione Programmazione
 
  
  
 Registrato: 04/04/07 21:28
 Messaggi: 4643
 Residenza: Internet
 
 | 
			
				|  Inviato: 19 Set 2008 13:47    Oggetto: |   |  
				| 
 |  
				| Non sarebbe male creare una funzione da mettere in qualche libreria che implementi la possibilità di risalire al tipo di una variabile. Qualche versione non ANSI lo fa...
 |  | 
	
		| Top |  | 
	
		|  | 
	
		|  |