zoukankan      html  css  js  c++  java
  • 嵌入式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

  • 相关阅读:
    左旋一个字符串和手摇反转法
    LCS
    游戏服务器学习_1
    面试题_带答案_2
    面试题_带答案
    安卓_13
    安卓_12activity
    安卓_12
    多盟_1
    安卓没删干净导致报错
  • 原文地址:https://www.cnblogs.com/nasduc/p/7123910.html
Copyright © 2011-2022 走看看