Следующий код работает правильно:
file1.cpp
//global variable
int g_myvar1 = 5;
file2.cpp
int myfunc()
{
extern int g_myvar1;
g_myvar1++
}
Как я могу сделать file2.cpp, если file1.cpp выглядит следующим образом:
file1.cpp
namespace myns
{
//global variable
int g_myvar1 = 5;
}
ПРИМЕЧАНИЕ 1, следующее дает ошибку компиляции в GCC 4.7 «неверное использование квалифицированного имени». Я попытался «использовать пространство имен», но безуспешно.
int myfunc()
{
extern int myns::g_myvar1;
g_myvar1++
}
ПРИМЕЧАНИЕ 2. Следующее работает, но я ищу только определение локальной переменной.
namespace myns
{
//global variable
extern int g_myvar1;
}
int myfunc()
{
myns::g_myvar1++
}
использование using
:
void f()
{
using myns::g_myvar1;
++g_myvar1;
}
Вы имеете объявлять переменные (с extern
ключевое слово) в .h
файл в пространстве имен myns
, а также определять их в .cpp
файл. И включите заголовочный файл везде, где вы хотите использовать переменные.
Поместите пространство имен с extern
объявление в заголовочном файле, и включите этот заголовочный файл во все исходные файлы, нуждающиеся в этой переменной.