Non è facile descrivere in parole povere quello che cerco di fare, ma ci proverò...
Dunque sto preparando un file Header con un elenco di funzioni (solo prototipi) che mi serviranno per dei lavori universitari. Affiancato a questo un file .c nel quale ci sono le rispettive definizioni. Il problema che mi si pone è che nel main posso usare qualsiasi tipo standard che si possa usare per fare operazioni aritmetiche (char, int, float, double...). Dunque una funzione dovrà poter affrontare questo problema.
La miglior idea che ho avuto è questa:
Nel file che contiene il main, prima di includere l'header, definisco una macro chiamata TYPE a cui do il nome del tipo che voglio usare ( e che dovrà essere sempre lo stesso per tutta l'esecuzione del main). Nell'header ogni tipo usato sarà indicato con TYPE.
nel main:
nell'header
Il problema di questo metodo è che per tutta l'esecuzione del main, il tipo delle variabili deve essere sempre lo stesso (concretamente questo non mi disturba perché di norma sarà sempre lo stesso), il secondo problema è il file .c.
Capisco che usare al suo interno TYPE possa essere un problema per il compilatore che infatti mi dice che non ha idea di cosa sia TYPE.
Come posso risolvere? magari anche usando un altro metodo. A naso credo che esistano tante soluzioni, ma preferirei una che permetta un facile uso dell'header :)
Faccio notare che ciò funziona se le definizioni stanno solo nell'header (il che mi sta anche bene, solo che così il file .h diventa enorme)
Dunque sto preparando un file Header con un elenco di funzioni (solo prototipi) che mi serviranno per dei lavori universitari. Affiancato a questo un file .c nel quale ci sono le rispettive definizioni. Il problema che mi si pone è che nel main posso usare qualsiasi tipo standard che si possa usare per fare operazioni aritmetiche (char, int, float, double...). Dunque una funzione dovrà poter affrontare questo problema.
La miglior idea che ho avuto è questa:
Nel file che contiene il main, prima di includere l'header, definisco una macro chiamata TYPE a cui do il nome del tipo che voglio usare ( e che dovrà essere sempre lo stesso per tutta l'esecuzione del main). Nell'header ogni tipo usato sarà indicato con TYPE.
nel main:
C:
#define TYPE int
#include "libreria.h"
int
main (void)
{
int v = 0;
f(v); //f viene presa da libreria.h
return 0;
}
C:
#ifndef _LIB_H
#define _LIB_H
#ifndef TYPE
#define TYPE double
#endif
void f(TYPE);
#endif
Il problema di questo metodo è che per tutta l'esecuzione del main, il tipo delle variabili deve essere sempre lo stesso (concretamente questo non mi disturba perché di norma sarà sempre lo stesso), il secondo problema è il file .c.
Capisco che usare al suo interno TYPE possa essere un problema per il compilatore che infatti mi dice che non ha idea di cosa sia TYPE.
Come posso risolvere? magari anche usando un altro metodo. A naso credo che esistano tante soluzioni, ma preferirei una che permetta un facile uso dell'header :)
Faccio notare che ciò funziona se le definizioni stanno solo nell'header (il che mi sta anche bene, solo che così il file .h diventa enorme)