以下代码可以正常工作:
文件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;
}
注意 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++
}
最佳答案
使用使用
:
void f()
{
using myns::g_myvar1;
++g_myvar1;
}
您已经在.h
文件中myns
中声明 变量(使用extern
关键字) ,并在 .cpp
文件中定义它们。并在您要使用变量的任何位置包含头文件。
关于c++ - 命名空间内全局变量的外部局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318348/