suxiang198的博客

技术+想法=实现

[HWRelated]C语言中的底层技术

   问题描述:C语言适合编写嵌入式软件,其中就涉及到许多C的底层技术,如移位操作、按位与或非等,还有与硬件平台相关的寄存器操作。以下是通用C语言底层技术学习的一点记录。
   结构中位域:这个功能用于节省存储空间,如一个布尔变量只需要一位即可,没必要声明成int型。除了单片机中的直接按位寻址操作,还可以用结构中的位域来处理,
struct file_data {
    unsigned int day: 5;   // 前5位用于day成员的存储
    unsigned int month: 4; // 紧接day后面4位用于month成员的存储
    unsigned int year: 7;  // 接着的7个bit用于year成员的存储
};
    位域的类型建议使用unsigned int,signed int类型,使用int会引起二义性,一些编译器将位域的最高位作为符号位,而一些编译器不会。
   通常意义上位域没有地址,C语言不允许将&运算符用于位域。
   指针当作地址用:
BYTE *p;
p = (BYTE *)0x1000;
   volatile:通常用在指向易变内存空间的指针的声明中,防止编译器优化只读取易变空间一次值。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suxiang198/article/details/46836951
文章标签: C 位域 地址
个人分类: Lang-C
上一篇[inline]C99中inline的使用
下一篇[DAQmx]创建虚拟通道时应当注意的基本问题
想对作者说点什么? 我来说一句

浅谈C语言中图形处理技术

2009年07月16日 100KB 下载

C语言库函数C语言库函数

2009年05月07日 60KB 下载

C语言中指针的灵活运用

2009年05月26日 36KB 下载

好东西C语言中的指针常量

2008年11月26日 167KB 下载

C语言中.h和.c文件解析 教程

2010年06月10日 75KB 下载

没有更多推荐了,返回首页

关闭
关闭