当前位置: 技术问答>linux和unix
在线等待,急!
来源: 互联网 发布时间:2015-03-16
本文导语: 我使用一个全局变量,在头文件里面定义为: int global; 在若干个c文件中使用了: extern int global; . . . . 使用g++编译,发现在一个c文件里面赋的值,在另外一个文件里面却发现值没有变,why? ...
我使用一个全局变量,在头文件里面定义为:
int global;
在若干个c文件中使用了:
extern int global;
.
.
.
.
使用g++编译,发现在一个c文件里面赋的值,在另外一个文件里面却发现值没有变,why?
int global;
在若干个c文件中使用了:
extern int global;
.
.
.
.
使用g++编译,发现在一个c文件里面赋的值,在另外一个文件里面却发现值没有变,why?
|
确认你的int global在事个程序中只定义了一次,而且没有和别的定义重名.例如在头文件定义int global,但是头文件被多个文件引用,这就可能产生多个同名变量的问题.
另外你也可以试着用下面方法来避免这种问题:
global.h
extern int getGlobal(void);
extern void setGlboal(int value);
global.c:
static int global;
int getGlobal(void)
{
return global;
}
void setGlobal(int value)
{
global = value;
}
另外你也可以试着用下面方法来避免这种问题:
global.h
extern int getGlobal(void);
extern void setGlboal(int value);
global.c:
static int global;
int getGlobal(void)
{
return global;
}
void setGlobal(int value)
{
global = value;
}
|
应该在 .h中声明 extern int XXX
在其中的一个.c文件中定义
int xxx
其他的文件中包括了头文件,就可以使用这个变量了
在其中的一个.c文件中定义
int xxx
其他的文件中包括了头文件,就可以使用这个变量了
|
.h中声明,.c中定义.
|
你在*.h中声明了,但是该变量的作用域只是限于某个文件,必须声明为static型,在没有被覆写之前它的值不变