命名空间内的全局变量的extern局部变量

You*_*usf 8 c++ namespaces extern

以下代码正常工作:

file1.cpp

//global variable
int g_myvar1 = 5;
Run Code Online (Sandbox Code Playgroud)

file2.cpp

int myfunc()
{
   extern int g_myvar1;
   g_myvar1++
}
Run Code Online (Sandbox Code Playgroud)

如果file1.cpp如下,我该怎么做file2.cpp:

file1.cpp

namespace myns
{
    //global variable
    int g_myvar1 = 5;
}
Run Code Online (Sandbox Code Playgroud)

注1,以下内容给出了GCC 4.7"无效使用限定名称"的编译错误.我试过'使用命名空间'也没有运气.

int myfunc()
{
   extern int myns::g_myvar1;
   g_myvar1++
}
Run Code Online (Sandbox Code Playgroud)

注2,以下工作,但我正在寻找唯一的局部变量定义.

namespace myns
{
    //global variable
    extern int g_myvar1;
}
int myfunc()
{
   myns::g_myvar1++
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 5

使用using

void f()
{ 
   using myns::g_myvar1;

   ++g_myvar1;
}
Run Code Online (Sandbox Code Playgroud)

您已在命名空间中的文件中声明变量(使用extern关键字),并在文件中定义它们。并在您想要使用变量的地方包含头文件。.hmyns.cpp

  • +1 for using 关键字的新用法。但这仍然需要在 void f() 之前声明“namespace mynm{extern int g_myvar1;}” (2认同)