如何在C++中使用全局变量
How can I use a global variable in C++?
我正在开发一款黑莓10手机应用程序。使用momentics IDE(BB Native SDK)。
在我的应用程序中,我希望使用将由许多类共享的全局变量。
我尝试了如下链接中所述的代码,但当我在".h"文件中的变量"g_nValue*"声明之前添加extern指令时,它会返回错误"为'g_nValue'指定的存储类"
*/global.cpp:
// declaration of g_nValue
int g_nValue = 5;
*/global.h:
#ifndef GLOBAL_H // header guards
#define GLOBAL_H
// extern tells the compiler this variable is declared elsewhere
extern int g_nValue;
#endif
有人对此有想法吗?我搜索了很多,他们都说extern指令不应该引起任何麻烦。
extern的替代方案是类内的静态变量:
//.h
struct Globals
{
static int g_global_var;
};
//.cpp
int Globals::g_global_var = 0;
//usage:
Globals::g_global_var;
extern
限定符只告诉编译器,"这个符号是在不同的源文件中定义的"-所以符号存在,使用它是安全的。如果你真的"撒谎"而不定义符号,你会得到一个链接错误-但这是另一回事。
你给我们看的代码没有任何问题。但这里有一个链接,可以帮助你更好地了解。。。
您不在定义变量exteren
的编译单元中声明它。如果您想在其他.cpp
文件(编译单元)中使用它,您只声明它extern
(并且不定义它)。
您的代码看起来不错。也许你在其他地方有错误。也许extern int g_nValue
前面的一行缺少分号(;)。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 包括一个类来定义全局变量参数 c++ :(