c语言全局变量那些事儿(2)

c语言全局变量那些事儿(2)

ID:33454366

大小:49.05 KB

页数:5页

时间:2019-02-26

c语言全局变量那些事儿(2)_第1页
c语言全局变量那些事儿(2)_第2页
c语言全局变量那些事儿(2)_第3页
c语言全局变量那些事儿(2)_第4页
c语言全局变量那些事儿(2)_第5页
资源描述:

《c语言全局变量那些事儿(2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三个例子这个例子代码同上一个一致,只不过我们将foo.c做成一个静态链接库libfoo.a进行链接,这里只给出Makefile的改动。1test:main.ofoo.o2arrcslibfoo.afoo.o3gcc-static-otestmain.olibfoo.a45main.o:main.c6foo.o:foo.c78clean:9rm-f*.otest运行情况如下:10foo:(&b)=0x080ca00811sizeof(b)=812b.a=213b.b=414main:0x0804825015parent:(&b)=0x080ca00816(&c)=0x080cc08417

2、sizeof(b)=418b=219c=020waitchild...21child:sleep(1)22(&b):0x080ca00823(&c)=0x080cc08424sizeof(b)=425setb=126c=027foo:(&b)=0x080ca00828sizeof(b)=829b.a=130b.b=431main:0x0804825032parent:childover33(&b)=0x080ca00834(&c)=0x080cc08435sizeof(b)=436b=237c=0从这个例子看不出有啥差别,只不过使用静态链接后,全局变量加载的地址有所改变,b和c的地址之间

3、似乎相隔更远了些。不过这次编译器倒是给出了变量b的sizeof决议警告。到此为止,有些人可能会对上面的例子嗤之以鼻,觉得这不过是列举了C语言的某些特性而已,算不上黑。有些人认为既然如此,对于一切全局变量要么用static限死,要么定义同时初始化,杜绝弱符号,以便在编译时报错检测出来。只要小心地使用,C语言还是很完美的嘛~对于抱这样想法的人,我只想说,请你在夜深人静的时候竖起耳朵仔细聆听,你很可能听到DennisRichie在九泉之下邪恶的笑声——不,与其说是嘲笑,不如说是诅咒……第四个例子1/*foo.c*/2#include34conststruct{5inta;6i

4、ntb;7}b={3,3};89intmain();1011voidfoo()12{13b.a=4;14b.b=4;15printf("foo:t(&b)=0x%08xtsizeof(b)=%d16tb.a=%dtb.b=%dtmain:0x%08x",17&b,sizeofb,b.a,b.b,main);18}1920/*t1.c*/21#include2223intb=1;24intc=1;2526intmain()27{28intcount=5;29while(count-->0){30t2();31foo();1printf("t1

5、:t(&b)=0x%08xt(&c)=0x%08x2tsizeof(b)=%dtb=%dtc=%d",3&b,&c,sizeofb,b,c);4sleep(1);5}6return0;7}89/*t2.c*/10#include1112intb;13intc;1415intt2()16{17printf("t2:t(&b)=0x%08xt(&c)=0x%08x18tsizeof(b)=%dtb=%dtc=%d",19&b,&c,sizeofb,b,c);20return0;21}Makefile脚本:22exp

6、ortLD_LIBRARY_PATH:=.2324all:test25./test2627test:t1.ot2.o28gcc-shared-fPIC-olibfoo.sofoo.c29gcc-otestt1.ot2.o-L.-lfoo3031t1.o:t1.c32t2.o:t2.c3334.PHONY:clean35clean:36rm-f*.o*.sotest*执行结果:37./test38t2:(&b)=0x0804a01c39(&c)=0x0804a02040sizeof(b)=41b=12c=13foo:(&b)=0x0804a01c4sizeof(b)=85b.a=46b.b

7、=47main:0x080485648t1:(&b)=0x0804a01c9(&c)=0x0804a02010sizeof(b)=411b=412c=413t2:(&b)=0x0804a01c14(&c)=0x0804a02015sizeof(b)=416b=417c=418foo:(&b)=0x0804a01c19sizeof(b)=820b.a=421b.b=422main:0x0804856423t1:(&b)=0x0804a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。