免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5743 | 回复: 6
打印 上一主题 下一主题

g_list_append问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-27 16:30 |只看该作者 |倒序浏览
很简单的创建一个list链表
GList *glist=NULL;
glist=g_list_append(glist,"2006");
glist=g_list_append(glist,"2007");
但是编译是出错:notebook.c:73: error: conflicting types for 'glist'
notebook.c:72: error: previous definition of 'glist' was here
notebook.c:73: warning: passing arg 1 of `g_list_append' makes pointer from integer without a cast

论坛徽章:
0
2 [报告]
发表于 2006-12-27 16:38 |只看该作者
错误信息已经说得很清楚了:glist 变量被重复定义了。看看在程序前面哪儿还定义了一次 glist。

论坛徽章:
0
3 [报告]
发表于 2006-12-27 16:58 |只看该作者
我看了,只定义了一次. 我在网上看都是这样做的,很奇怪,不知道错那了

论坛徽章:
0
4 [报告]
发表于 2006-12-28 09:27 |只看该作者
原帖由 whyglinux 于 2006-12-27 16:38 发表
错误信息已经说得很清楚了:glist 变量被重复定义了。看看在程序前面哪儿还定义了一次 glist。

昨晚试了下本来我在全局定义的, 编译的时候提示出错,后来我定义了成局部变量, 然后就好了 ,这是社么原因?

论坛徽章:
0
5 [报告]
发表于 2006-12-28 11:15 |只看该作者
原因就是 glist 变量被重复定义了。定义为局部变量后,局部域将覆盖全局域,所以不构成重复定义的错误。

除了 GList* 类型之外,glist 还被定义或者声明为整数类型。整数类型的 glist 变量的声明可能是通过包含头文件来实现的。

论坛徽章:
0
6 [报告]
发表于 2007-01-08 11:29 |只看该作者
这么明显的问题,指针没有初始化,也就是说没有分配存储空间

论坛徽章:
0
7 [报告]
发表于 2007-01-08 13:29 |只看该作者
原帖由 clim 于 2007-1-8 11:29 发表
这么明显的问题,指针没有初始化,也就是说没有分配存储空间


可不能这么说。对于 GList 来说,空指针有其特殊的含义--表示一个空表(Empty List)。新建 list 的时候一般总是从一个空表开始的。

而且,g_list_append() 函数的第一个参数是一个 GList 类型的指针,此函数并不是通过这个指针去修改指向的对象,而仅仅是修改此指针的值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP