zoukankan      html  css  js  c++  java
  • volatile, extern and static

    volatile :

      1,该关键字只是在编译时指使 编译器 作出相应动作;而非运行时作怪;

      2,指示编译器,不必作出多余的优化: 对于已经存入寄存器当中的变量作访问时,使用volatile会在编译得到的指令当中增加 访问内存的 部分; 即,当访问处于寄存器变量时,都是去主存获取当前最新的数据;

      3,与cache一致性无关; cache一致性由硬件维护;

      4,Useful link : Do you volatile? Should you? - Linux For Devices Articles - Linux for Devices

     extern :

      1,不懂,属于原来C语言没学好的一类;

      2,函数自身都是extern type;

      3,变量 以在函数内/外为界,定义为 内部或者外部变量;在函数外定义的变量为外部变量,作用域为定义开始处到文件结尾;如果在定义处之前的代码/函数中使用该变量var,先使用extern var 声明即可;

      4,编译器编译时遇到extern var, 先在本文件当中搜寻变量的定义;如果未找到,“会在链接时在其余文件当中搜索”。。。(最后这句引用,我觉得编译时是否就可以完成的啊,为毛链接时再去找呢,链接时工作应该是地址空间的变动和计算,这时还要费力去首先判断一个变量是否存在?不懂。。)

     static :

      1,在函数内定义时,其余函数不能引用,因为是函数内部的局部变量;

      2,在函数外定义时,该变量虽是外部变量,但是作用域只能局限于本文件当中,其余文件中代码不得通过 extern 来引用;

      3,关于extern 或者 static 详情, 可咨询 K&R那本大作;

  • 相关阅读:
    fmt命令
    wc命令
    grep命令
    head命令
    C/C++语法知识:typedef struct 用法详解
    邻接表无向图的介绍
    邻接矩阵无向图的介绍
    图的基本概念
    careercup-栈与队列 3.6
    careercup-栈与队列 3.5
  • 原文地址:https://www.cnblogs.com/superniaoren/p/2425609.html
Copyright © 2011-2022 走看看