嵌入式C语言实践笔记 [持续更新中......]

1. 关于while(1)与for(;;):

      在功能上,都是实现死循环,但是代码效率是否完全一样,取决于编译器。有些编译器编译出来的代码,for(;;)的效率比while(1)高,有些编译器编译出来的则完全一样。考虑代码的移植性和效率,建议使用for(;;)循环。

2. 别把“位域”的概念和“bit"数据数据类型搞混了:

      在C语言的标准中,为了节省内存空间,有“位域”的数据结构,但是却没有bit数据类型。bit数据类型是嵌入式开发工具中的编译器扩展的一种数据类型,目的也是为了节省内存空间(bit数据类型只占1位)。这类数据类型除bit外,还有sbit,sfr,sfr16。

3. 别忘记给循环变量加关键字volatile:

      如果开启了编译器优化选项,嵌入式开发环境的编译器通常会把循环变量优化导致错误,这时就需要在循环变量前加关键字volatile,以告诉编译器不要对此变量进行优化。

      当读取一个变量时,为了提高读取速度,编译器进行优化时通常会先把变量读取到一个寄存器中,以后再读取变量值时,就直接从寄存器中读取。变量如果加了voletile修饰,则会从内存中重新装载内容,而不是直接从寄存器中拷贝内容。

     还需要注意的是,这里的循环变量,不只是for循环,还有while循环,比如:

volatile unsigned short i;
for(i=0;i<1000;i++)
{
    ......
}

volatile unsigned short j = 2000;
while(j--)
{
    ......
}
复制代码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值