简体   繁体   中英

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

I'm developping a Blackberry 10 mobile app. using the momentics IDE (BB Native SDK).

In my application, I want to use global variables that will be shared by many classes.

I tried the code below like described in this link , but when I add the extern instruction before the declaration of the variable " g_nValue* " in the ".h" file, it returns the error "storage class specified for '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

Any one have an idea on this? I searched a lot and they all said that the extern instruction should not cause any trouble.

An alternative to extern are static variables inside a class:

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

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

//usage:
Globals::g_global_var;

the extern qualifier only tells the compiler, "this symbol is defined in a different source file" - so the symbol exists, it's safe to use it. You will get a linking error if you actually "lie" about it and don't define the symbol - but that's a different story.

There does not seam to be any problem with the code you showed us. But here is a link which might help you get a better idea...

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

Your code seems fine. Maybe the you have an error elsewhere. Maybe there is a semicolon (;) missing in a line before extern int g_nValue .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM