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

extern local variable for global variable inside namespace

本文关键字:外部 局部变量 全局变量 命名空间      更新时间:2023-10-16

下面的代码可以正常工作:

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;
}

NOTE1,下面给出了GCC 4.7的编译错误"invalid use of qualified-name"。我试过"使用命名空间",也没有运气。

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;
}

您已经在命名空间myns中声明了.h文件中的变量(使用extern关键字),并且.cpp文件中定义了它们。在你想使用变量的地方包括头文件

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