Marco per definizione di parametri nelle funzioni

di Anonimizzato11522 il
4 risposte
Ciao,
stavo scrivendo un programma in C++. Ho diverse funzioni "simili" tra loro e vorrei evitare di definirle ogni volta interamente magari usando, magari, macro o qualcosa di simile.
Faccio un esempio in una sottospecie di pseudo-code per essere piú chiaro:


func1{
   int a1=5;
   int a2=5;
}

func2{
    int a2=5;
    int a3=5;

}
...e cosí via fino a func10...
Come si vede nel nome della variabili ho un carattere (il numero che dipende dalla funzione.
Sarebbe possibile fare qualcosa del genere (per evitare di definire 10 funzioni):

funcX{
    int aX=5;
    int a(X+1)=5;
}
Ovviamente la funzione che lega il nome della variabile e quello della funzione puó essere una generica relazione lineare, una volta capito il metodo non é difficile poi estenderlo a un caso piú generico.Idee?

4 Risposte

  • Ti ringrazio!
    Supponendo, peró, che la mia funzione non riceva parametri é possibile definire il tutto a livello di preprocessore? Il mio obiettivo é unicamente una maggiore compattezza del codice quindi unicamente un fatto estetico. Se fosse possibile fare il tutto con qualche #define eviterei di usare qualche template e, suppongo, guadagnerei in leggibilitá. Non sono un guru...scusatemi se ho qualche idea folle/sbagliata o mi scappa qualche eresia ogni tanto
  • Non so se ti può aiutare ma questo potrebbe funzionare
    
    #include <iostream>
    
    #define VAR(T,X) T##X
    
    
    int func(char var,int i)
    {
    	int VAR(var,i) = i+1;
    	return VAR(var,i);
    }
    
    int main()
    {
    	for(int i = 0; i < 5; i++)
    		std::cout << 'a' << i << ":" << func('a',i) << std::endl;
    }
    
    Cmq il secondo link che ti ho dato funziona meglio in quanto tiene una relazione sul nome variabile e sul valore. Ed è anche più facile da capire in futuro.
  • Proveró entrambe le soluzioni anche, se come dici tu, la precedente é un po´ piú "pulita".
    Grazie!
Devi accedere o registrarti per scrivere nel forum
4 risposte