[C] Costanti letterali con le funzioni

di il
7 risposte

[C] Costanti letterali con le funzioni

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

  • Re: [C] Costanti letterali con le funzioni

    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);
  • Re: [C] Costanti letterali con le funzioni

    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.
  • Re: [C] Costanti letterali con le funzioni

    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.
  • Re: [C] Costanti letterali con le funzioni

    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.
  • Re: [C] Costanti letterali con le funzioni

    Sicuramente dipenderà da quella costante, ma nel caso del dimensionamento dell'array, dovresti usare l'allocazione dinamica.
  • Re: [C] Costanti letterali con le funzioni

    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 ?
  • Re: [C] Costanti letterali con le funzioni

    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