/Anonimizzato19022Utente anonimizzato27 feb 2016, 22:38Ho un problema che riguarda la semantica delle costanti letterali applicate alle funzioni/procedure. Per evitare i famosi "magic numbers" all'interno dei miei programmi è mio solito dichiarare tante costanti letterali. Es. #define DIMENSIONE 10 Il dubbio che mi perseguita è il seguente: Come mi devo comportare quando devo utilizzare la costante letterale all'interno di una funzione? A-Dichiaro una variabile nel main che prenda il valore delle costante letterale: int dim=DIMENSIONE; foo(dim); B-Utilizzare la costante letterale direttamente all'interno della funzione void foo() { int V[DIMENSIONE]; }
CcandaluarMolto attivoIscritto daago, 2013Messaggi190027 feb 2016, 22:46Usala direttamente nella funzione, a meno che la funzione non debba poter lavorare con altri valori, caso in cui sei costretto a passare un parametro foo(DIMENSIONE_1); foo(DIMENSIONE_2);
OoregonSuper FamosoIscritto danov, 2011Messaggi2191727 feb 2016, 22:48Dipende ... usare una variabile potrebbe essere utile, passandola per puntatore, per impostare un valore iniziale ed ottenerne un altro in uscita. Altrimenti non ha senso usare la variabile e passare la costante.
/Anonimizzato19022Utente anonimizzato27 feb 2016, 22:51Ok benissimo,l'unica cosa che ancora mi fermava dall'agire come mi hai detto era il dubbio che in questo modo la funzione non sarebbe più stata "indipendente" dal resto del codice.Comunque ti ringrazio.
/Anonimizzato19022Utente anonimizzato27 feb 2016, 22:56Ho formulato male gli esempi,in teoria dovevano essere separati. Infatti non volevo che il codice del primo esempio facesse riferimento al codice presente nel secondo.
OoregonSuper FamosoIscritto danov, 2011Messaggi2191727 feb 2016, 22:57Sicuramente dipenderà da quella costante, ma nel caso del dimensionamento dell'array, dovresti usare l'allocazione dinamica.
/Anonimizzato19022Utente anonimizzato27 feb 2016, 23:02oregon ha scritto:Sicuramente dipenderà da quella costante, ma nel caso del dimensionamento dell'array, dovresti usare l'allocazione dinamica. Il mio dubbio è proprio il fatto che la funzione dipenda da quella costante,non dovrebbe essere semanticamente sbagliato ?
OoregonSuper FamosoIscritto danov, 2011Messaggi2191727 feb 2016, 23:26Potrebbe esserlo, se la funzione appartenesse ad una libreria, ad esempio, se la costante viene usata al suo interno direttamente. Se usi un argomento e lo usi per passare il valore, costante o no, è meglio.