- 注册时间
- 2005-12-20
- 最后登录
- 1970-1-1
|
发表于 2007-7-20 23:29:44
|
显示全部楼层
这个问题困扰了我一整天,还没有解决.主要是因为我对引用传参还一知半解.我研究了一整天,最终找到了问题的核心,我写了最简洁的例子来给大家看.
先写以下代码:- struct noname
- {
- int pt;
- };
- void f(struct noname &q)
- {
- printf("%d",q.pt);
- getchar();
- }
- char extern[100]="Lumj";//语句a
- void main()
- {
- struct noname noname1;
- noname1.pt=extern;
- f(extern);
- }
复制代码 结果显示30028,然后把 语句a 用注释保护起来,再编译成noname.lav,再写 接口.txt:接下来弄出noname.y,再写nonameTest.txt:- struct noname
- {
- int pt;
- };
- char extern[100]="Lumj";
- void main()
- {
- struct noname noname1;
- noname1.pt=extern;
- printf("%d\n",noname1.pt);getchar();
- f(noname1);
- }
- #include "noname.y"
复制代码 运行结果很奇怪,是而我预料的是8192,8192,因为我想把void f()做成链接库不会使结果改变.
然而,问题出在extern是全局变量,只要把它声明在main函数内部就没问题.
谁能告诉我这是怎么回事,该怎样修改? |
|