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:通常用在指向易变内存空间的指针的声明中,防止编译器优化只读取易变空间一次值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技塑未来-苏导

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值