免费注册 查看新帖 |

Chinaunix

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

linux求证。。。。。。。。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-13 09:30 |只看该作者 |倒序浏览
本帖最后由 hidiy 于 2010-05-13 09:59 编辑

我想求证一下,linux源码中很多全局结构体都只初始化了一个或者几个成员变量,其他的未初始化的成员变量会不会自动初始化为0或者null?

eg:struct device platform={.bus_id=“platform”};其余成员并没有赋值初始化,他们的值会被gcc初始化为0吗?

论坛徽章:
0
2 [报告]
发表于 2010-05-13 09:37 |只看该作者
请了解的朋友,指证一下,困惑ing

论坛徽章:
0
3 [报告]
发表于 2010-05-13 10:40 |只看该作者
关注ing。。。。。。。。。。。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2010-05-13 10:48 |只看该作者
应该是的。其实LZ也可以自己写个模块验证一下啊。

论坛徽章:
0
5 [报告]
发表于 2010-05-13 10:55 |只看该作者
回复 4# Godbach


  终于有人回贴老,问题是他的值可能是随机的,所以我需要求证一下。。。
比如说file_operation这个结构体,我们常常会给他的open read write赋值,而lseek缺很少用到,或者可能没有赋值,好像编译器默认就会给他的lseek成员变量赋NULL

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2010-05-13 10:57 |只看该作者
全局变量的初始化不是随机的。

论坛徽章:
0
7 [报告]
发表于 2010-05-13 11:04 |只看该作者
回复 6# Godbach


    有很多朋友说是根据编译器的不同,可能会是随机的。大部分都会把为初始化的全局变量初始化为0或者null

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2010-05-13 11:28 |只看该作者
建议这样处理,你在引用的时候不要做任何假设。如果你没初始化的变量或者成员,不要假设它的值。

论坛徽章:
0
9 [报告]
发表于 2010-05-13 11:38 |只看该作者
本帖最后由 hidiy 于 2010-05-13 11:39 编辑

回复 8# Godbach
这个是linux驱动模型源码,
    int device_add(struct device *dev)
{
        struct device *parent = NULL;
        struct class_interface *class_intf;
        int error = -EINVAL;
        dev = get_device(dev);//
        if (!dev)
                goto done;
        /* Temporarily support init_name if it is set. * It will override bus_id for now */
        if (dev->init_name)//此指针变量未初始化,他就在使用。我想肯定要么是gcc初始化了全局变量为NULL,或者其他地方初始化了他,我没看见到底在那初始化了他,这个函数中 有 很多类似情况
                dev_set_name(dev, "%s", dev->init_name);
        if (!strlen(dev->bus_id))
                goto done;
        pr_debug("device: '%s': %s\n", dev->bus_id, __func__);
        parent = get_device(dev->parent);//此处的dev_>parent 同样为初始化
        setup_parent(dev, parent);
        /* use parent numa_node */
        if (parent)
                set_dev_node(dev, dev_to_node(parent));
        /* first, register with generic layer. */
        error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev->bus_id);
        if (error)
                goto Error;
        /* notify platform of device entry */
        if (platform_notify)
                platform_notify(dev);
        /* notify clients of device entry (new way) */
。。。。。。。。。。。。。。。。。。。。。。

同时感谢你的回复,这个问题一直困扰我,希望得到求证

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2010-05-13 12:13 |只看该作者
建议网上搜一下全局变量初始化的相关内容。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP