L'unica differenza tra la dichiarazione di una variabile esterna a perimetro namespace:
extern int x;
void foo() {
cout << x;
}
e dichiari a perimetro funzione:
void foo() {
extern int x;
cout << x;
}
è che in quest'ultimo caso, x
è solo visibile all'interno della funzione.
Tutto ciò che si sta facendo è stringere ulteriormente la portata della dichiarazione extern
.
Ecco un esempio analogo utilizzando namespace:
a portata namespace:
#include <string>
using std::string;
void foo() {
string str1;
}
string str2; // OK
A perimetro funzione:
#include <string>
void foo() {
using std::string;
string str1;
}
string str2; // Error - `using` not performed at this scope
fonte
2013-06-01 00:19:47
questi post sono correlati: http://stackoverflow.com/questions/16459422/why-does-declaring-an-extern-variable-inside-main-works-but- non definendo-it-in e http://stackoverflow.com/questions/9686198/questo-è-del-uso-del-declaring-a-static-variable-as-extern-inside-a-function – taocp