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

时间:2013-01-14 12:23:58

标签: c++ namespaces extern

以下代码正常运行:

file1.cpp

//global variable
int g_myvar1 = 5;

file2.cpp

int myfunc()
{
   extern int g_myvar1;
   g_myvar1++
}

如果file1.cpp如下,我该怎么办file2.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++
}

2 个答案:

答案 0 :(得分:4)

使用using

void f()
{ 
   using myns::g_myvar1;

   ++g_myvar1;
}

声明变量(使用extern关键字)在.h文件的myns文件中, define 它们在.cpp文件中。并在您想要使用变量的任何地方包含头文件。

答案 1 :(得分:2)

将带有extern声明的命名空间放在头文件中,并将该头文件包含在需要该变量的所有源文件中。