Diciamo che avete una classe (C++) o un modulo (file singolo c). Quindi in una delle tue funzioni vuoi memorizzare una copia di una variabile e mantenerne il valore fino alla prossima chiamata della funzione, è meglio avere una globale (potrebbe essere privata in C++ e non esternamente in c per mantenere nello scope del modulo) o creare una variabile statica locale?Per creare una variabile persistente è meglio avere una variabile statica locale o globale?
es .:
void some_func_that_does_not_do_anything_useful(int arbVal)
{
static int lastArbVal = 0;
if (arbVal > lastArbVal)
{
lastArbVal = arbVal;
}
}
Il motivo che mi avrebbe fatto uno statica è quello di mantenere la sua portata quanto più limitato possibile, ma certe cose che ho letto suggerisco si dovrebbe usare globali per questo, così ora sono confuso.
Cosa è meglio (se presente) ?, vantaggi/svantaggi?
Se lo si utilizza solo in quella funzione e in nessun altro luogo, renderlo 'static' è probabilmente la soluzione migliore. Anche se potresti voler pensare a casi come il multi-threading, la variabile statica sarà condivisa tra tutti i thread. –
Nell'interesse dell'incapsulamento, una statica locale sarebbe la migliore. Questo è anche l'approccio adottato da molte funzioni C. 'strtok' viene in mente. – Adam
Per citare dalla pagina man di 'strtok':" Non usare mai queste funzioni ". Non usiamolo come esempio di come fare le cose :-) –