以下代码正常运行:
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++
}
答案 0 :(得分:4)
使用using
:
void f()
{
using myns::g_myvar1;
++g_myvar1;
}
您声明变量(使用extern
关键字)在.h
文件的myns
文件中, define 它们在.cpp
文件中。并在您想要使用变量的任何地方包含头文件。
答案 1 :(得分:2)
将带有extern
声明的命名空间放在头文件中,并将该头文件包含在需要该变量的所有源文件中。