[C] Costanti letterali con le funzioni

di Anonimizzato19022 il
7 risposte
Ho 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];
}

7 Risposte

  • Usala 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);
  • Dipende ... 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.
  • Ok 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.
  • Ho 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.
  • Sicuramente dipenderà da quella costante, ma nel caso del dimensionamento dell'array, dovresti usare l'allocazione dinamica.
  • oregon 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 ?
  • Potrebbe 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.
Devi accedere o registrarti per scrivere nel forum
7 risposte