如何在C ++中使用全局变量?

时间:2013-12-06 09:55:30

标签: c++ c qt qml blackberry-10

我正在开发Blackberry 10移动应用程序。使用momentics IDE(BB Native SDK)。

在我的应用程序中,我想使用将被许多类共享的全局变量。

我尝试了下面的代码,如link中所述,但是当我在声明变量“ g_nValue”之前添加 extern 指令时*。“在”.h“文件中,它会返回错误”为'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 指令不应该造成任何麻烦。

4 个答案:

答案 0 :(得分:1)

extern的替代方法是类中的静态变量:

//.h
struct Globals
{
    static int g_global_var;
};

//.cpp
int Globals::g_global_var = 0;

//usage:
Globals::g_global_var;

答案 1 :(得分:1)

extern限定符仅告诉编译器“此符号在不同的源文件中定义” - 因此符号存在,使用它是安全的。如果您实际上“撒谎”并且没有定义符号,您将收到链接错误 - 但这是一个不同的故事。

您向我们展示的代码没有任何问题。 但这里有一个link可能会帮助你获得一个更好的主意......

答案 2 :(得分:0)

您没有在其定义的编译单元中声明变量exteren。如果您需要,您只需将其声明为extern定义它)在其他.cpp文件(编译单元)中使用它。

答案 3 :(得分:0)

您的代码似乎很好。也许你在其他地方有错误。也许在extern int g_nValue之前的行中缺少分号(;)。