linux驱动 - C语言声明问题,求大牛

查看:96
本文介绍了linux驱动 - C语言声明问题,求大牛的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

文件1这样声明变量

extern uchar environment[];

文件2:

struct environment {
    void            *image;
    uint32_t        *crc;
    unsigned char        *flags;
    char            *data;
    enum flag_scheme    flag_scheme;
};

static struct environment environment = {
    .flag_scheme = FLAG_NONE,
};

请问各位大牛,extern uchar environment[];的这句声明是什么意思?enviroment不是一个结构体类型吗?还加uchar[]是什么意思?

解决方案

文件1中的extern和文件2中的static是矛盾的呀,所以文件1的environment恐怕另有所指吧。

如果去掉文件2中的static,编译连接后两个文件的environment会指向同一个存储空间,尽管它们的类型是不同的。也就是说用文件1的environment[i]可以访问文件2中同名结构体变量内部的字节,达到类似reinterpret_cast的效果。

这篇关于linux驱动 - C语言声明问题,求大牛的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆