8

以下代码正常工作:

文件1.cpp

//global variable
int g_myvar1 = 5;

文件2.cpp

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

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

文件1.cpp

namespace myns
{
    //global variable
    int g_myvar1 = 5;
}

NOTE1,以下给出了 GCC 4.7“无效使用限定名”的编译错误。我也尝试了“使用命名空间”,但也没有运气。

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

NOTE2,以下工作,但我正在寻找仅局部变量定义。

namespace myns
{
    //global variable
    extern int g_myvar1;
}
int myfunc()
{
   myns::g_myvar1++
}
4

2 回答 2

5

使用using

void f()
{ 
   using myns::g_myvar1;

   ++g_myvar1;
}

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

于 2013-01-14T12:27:18.297 回答
2

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

于 2013-01-14T12:27:25.817 回答