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

How can I use a global variable in C++?

本文关键字:全局变量 C++      更新时间:2023-10-16

我正在开发一款黑莓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前面的一行缺少分号(;)。