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

标签 c++ namespaces extern

以下代码可以正常工作:

文件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/

相关文章:

c++ - Mat 和 Pix 的不同 Tesseract 结果

c++ - 编译器在乘以子类型时选择了错误的运算符*

c# - 将自定义代码放在系统 namespace 中

node.js - 如何在 Redis 上命名空间键以避免名称冲突?

c++ - 将{pointer to function with C linkage}分配给{pointer to function with C++ linkage},反之亦然

c - 使用链接器命令将 C 中的数组分配到特定位置

c++ - 如何从目录迭代器中选择特定文件并进行比较

c++ - 保护 Cap'n Proto RPC 网络流量的好方法是什么?

php - Laravel 接口(interface)

c++ - 使用 "auto"的声明是否与使用具体类型说明符的外部声明匹配?