Зачем переменные необходимо выставлять при объявлении в заголовочном файле, а затем снова объявлять в соответствующем файле cpp:Ошибка внешнего и компоновщика
a. Предотвращение ошибки связи
ex. header 1.h-
namespace forglobal {
extern int x;
}
source 1.cpp-
namespace forglobal{
int x=6;
}
source 2.cpp-
#include "1.h"
cout<<x; //6
b. Использовать в разных файлах cpp, не могу ли я просто использовать пространство имен, например, я вызываю функцию ex.
header -1.h
namespace forglobal {
int x
}
source -1.cpp {
namespace forglobal {
void change() {
x=5;
}
}
}
source -2.cpp
#include "1.h"
forglobal::change();
cout<<forglobal::x<<'\n'; //5
, строго говоря, переменная пространства имен не является глобальной переменной. Но все они автоматически инициализировались. –