linux驱动 - C语言声明问题,求大牛
本文介绍了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屋!
查看全文