嵌入式C中的一些语言基础知识

1、申明和定义

  1.1 变量的定义和声明

     变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。

       变量的声明用于向程序表明变量的类型和名字,定义包括声明:当定义变量时我们声明了它的类型和名字。申明可以多次。

      可以通过使用extern关键字声明变量名而不定义它。不定义变量的声明包括对象名、对象类型前的关键字extern。

       extern int i; // declares but does not define i 申明但不定义

       int i; // delares and defines i 申明而且定义

      PS:如果声明有初始化式,那么它可以当作定义,extern int i=1;而且这种方式,extern必须在函数外面。

   1.2  函数的定义和声明

      以上都是针对变量,对于函数来说,函数的定义包含实现,比如:

       double f(int i, double d)

          {return i+d;} 

       函数的声明:double f(int, double); // 对于函数声明,extern关键字是可以省略的。

      

      无论如何,定义 操作是只能做一次的。如果你忘了定义一些你已经声明过的变量,或者在某些地方被引用到的变量,那么,连接器linker是不知道这些引用该连接到那块内存上的。然后就会报missing symbols 这样的错误。如果你定义变量超过一次,连接器是不知道把引用和哪块内存连接,然后就会报 duplicated symbols这样的错误了。以上的symbols其实就是指定义后的变量名,也就是其标识的内存块。

 1.3 头文件防止多次定义

    头文件很容易被嵌套include;有时候,有文件中包含对变量的定义,这样就存在变量被多次定义的情况,所以会用以下的格式来避免这种情况的发生:

  #ifndef __DELAY_H

 #define __DELAY_H

 头文件的主体,包含各种函数的申明和变量的声明或者定义,虽然在头文件中对变量进行定义是不推荐的。

  #endif

posted on 2017-07-05 22:44  nasduc  阅读(232)  评论(0编辑  收藏  举报

导航