首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
在嵌入式软件编程中深入理解关键字
来源:本站整理  作者:佚名  2009-11-17 16:00:06




引 言
    计算机编程语言的关键字就好比是它的灵魂,只有深入理解了它们的含义才能编写出优秀的代码。C语言以其简洁、高效和强大等特性成为嵌入式软件编程的首选语言,但是某些关键字,例如const、static、extern和volatile等,在不同的场合具有不同的含义,而且某些用法晦涩难懂,为此本文详细介绍这些关键字的用法及其背后的原理。


1 const
    const限定的对象表示编译器可以将它放在只读存储器中,也就意味着在对其进行初始化之后就不能改变它的值。根据const使用的不同场合,大致可以分为三种情况,其一限定普通变量,其二限定函数参数,其三限定指针变量。
    第一和第二种情况最为简单,语句①和语句②分别展示了它的用法。语句①定义了一个值为10的整型常量。语句②中的const表示在函数体中不能修改src指向的区域中的数据,这与函数的拷贝功能相对应,只做它应该做的事情而不应该有其他副作用,编译器可以利用这些信息进行适当的优化。
    ①const int i=10;
    ②void*memcpy(void * dst,const void * src,size_t size);
    ③const int *ptr;
    ④int const *ptr;
    ⑤int*const ptr;
    ⑥int const*cons ptr;
    第3种情况最为复杂,虽然只是const位置不同,但是却可能具有完全不同的意义。一般,一个声明语句由声明说明符(decl-specifier)和一系列声明子(declarator)两部分组成,而且声明说明符中的符号可以以任何次序出现。理解声明的第一步是定位说明符和声明子的边界。这很容易:所有的说明符都是关键字或者类型名,因此说明符终止于第一个不是以上类型之一的符号。例如,在语句③和④中第一个既不是关键字也不是类型名的符号是“*”,即声明说明符分别为const.int和int const,由于声明说明符中的符号可以以任意次序出现,因此语句③和④的含义是相同的。
    为了迅速弄清语句表达的含义,参考文献[1]介绍了一种简便的方法,其要点就是“逆序读出定义”,如图1所示。

2 static与extem
    static的含义随着出现位置(全局变量还是局部变量)和修饰对象(变量还是函数)的不同而有很大的差别。下面各条目中的模块指的是一个源文件或者一个翻译单元:

    ①位于函数体中的静态变量在多次函数调用间会维持其值。
    ②位于模块内(但在函数体外)的静态变量可以被模块内的所有函数访问,但不能被模块外其他函数访问。也就是说,它是一个本地的全局变量。

[1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:25,378.91000 毫秒