我正在开发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 指令不应该造成任何麻烦。
答案 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
之前的行中缺少分号(;)。