Dichiarare una variabile globale in C++
- Dichiarare una variabile globale in un singolo file di origine in C++
- Dichiarare una variabile globale in più file di origine in C++
Questo articolo spiegherà diversi metodi su come dichiarare una variabile globale in C++.
Dichiarare una variabile globale in un singolo file di origine in C++
Possiamo dichiarare una variabile globale con l’istruzione che è posta al di fuori di ogni funzione. In questo esempio, assumiamo la variabile di tipo int
e la inizializziamo con un valore 123
arbitrario. È possibile accedere alla variabile globale dall’ambito della funzione main
così come da qualsiasi costrutto interno (bucle o istruzione if) al suo interno. Le modifiche a global_var
sono visibili anche a ciascuna parte della routine main
, come mostrato nell’esempio seguente.
#include <iostream>
using std::cout;
using std::endl;
int global_var = 123;
int main() {
global_var += 1;
cout << global_var << endl;
for (int i = 0; i < 4; ++i) {
global_var += i;
cout << global_var << " ";
}
cout << endl;
return EXIT_SUCCESS;
}
Produzione:
124
124 125 127 130
D’altra parte, se nello stesso file sorgente sono definite anche funzioni aggiuntive, possono accedere direttamente al valore global_var
e modificarlo nell’ambito della funzione. Le variabili globali possono anche essere dichiarate con uno specificatore const
, che le forza ad essere accessibili solo attraverso l’unità di traduzione corrente (file sorgente con tutte le intestazioni incluse).
#include <iostream>
using std::cout;
using std::endl;
int global_var = 123;
void tmpFunc() {
global_var += 1;
cout << global_var << endl;
}
int main() {
tmpFunc();
return EXIT_SUCCESS;
}
Produzione:
124
Dichiarare una variabile globale in più file di origine in C++
In alternativa, potrebbero esserci variabili globali dichiarate in diversi file di origine e che devono essere accessibili o modificate. In questo caso, per accedere alla variabile globale, deve essere dichiarata con uno specificatore extern
, che dice al compilatore (più precisamente al linker) dove cercare la definizione glob_var1
.
#include <iostream>
using std::cout;
using std::endl;
int global_var = 123;
extern int glob_var1; // Defined - int glob_var1 = 44; in other source file
void tmpFunc() {
glob_var1 += 1;
cout << glob_var1 << endl;
}
int main() {
tmpFunc();
return EXIT_SUCCESS;
}
In alcuni casi potrebbero esserci variabili globali dichiarate con uno specificatore static
nei diversi file sorgente. Queste variabili sono accessibili solo all’interno del file in cui sono definite e non possono essere raggiunte da altri file. Se provi ancora a dichiararli con extern
nel file corrente, si verificherà l’errore del compilatore.
#include <iostream>
using std::cout;
using std::endl;
int global_var = 123;
extern int
glob_var2; // Defined - static int glob_var2 = 55; in other source file
void tmpFunc() {
glob_var2 += 1;
cout << glob_var2 << endl;
}
int main() {
tmpFunc();
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook