关于全局变量的使用问题,请高手指教

//lex.h:structitem{...};staticstructitemsymtable[500];...//lex.cpp#include"lex.h"void... //lex.h:
struct item{...};
static struct item symtable [500];
...

//lex.cpp
#include"lex.h"
void init()
{...}
...

//main.cpp
#include"lex.h"
void main()
{...}
...

g++ -g lex.cpp main.cpp -o lex
程序是这样子的。我想问在lex.cpp文件中初始化了symtable数组中一些项的值,在main()函数中想循环输出一部分,但是用gdb发现只有当程序进入lex.cpp中symtable中才是初始化以后的值,在main()函数中仍是未初始化的值。当程序再进入lex.cpp中的其他函数时又可以查出symtable是初始化后的值,这是为什么呢?
不加static连接会出现重复定义的错误。请高手指教
展开
 我来答
diyulangzi
2012-03-05
知道答主
回答量:43
采纳率:0%
帮助的人:24.7万
展开全部
static变量放在cpp里面去定义吧,想多个cpp去使用就使用外部变量
你这样放在头文件里面去给不同cpp调用,在各自cpp里面应该是各自的值
追问
嗯,已经按你说的做好了。只是有一点不明白,为什么全局变量再各自的cpp里是各自的值?按常理说,任何地方都可以修改全局变量啊,而且各处的值应该是一样的
追答
static全局变量只在本文件中有效,哪个cpp包含了就在哪个cpp有效,在cpp里各自定义就跟你在h里面定义被多个包含是一样了,各自的值就不一样的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式