zoukankan      html  css  js  c++  java
  • 重读C库之宏定义

    1.如何编写头文件.h?

    1 //file--func1.h
    2 
    3 #ifndef  __FUNC1_H  //__func1_h   //可小写可大写
    4 
    5 #define   __FUNC1_H  //__func1_h
    6 
    7  ...
    8 
    9 #endif 

    2.如何在C++文件使用C库?

    #ifdef __cpluscplus
    
             extern “C” {    
    
    #endif
    
    //中间是C代码
    
     
    
    #ifdef __cpluscplus
    
             }
    
    #endif

    更复杂版本:

     

    3.#undef作用

    在后面取消以前定义的宏定义;一般使用#undef取消一个宏定义后可以再次对其进行新的定义。

    4.屏蔽不同芯片数据类型位数差异,如int是16还是32位?统一使用int16_t/int32_t来定义变量。

     

    5.volatile的使用:阻止编译器过优化,被定义的变量每次必须从内存中重新读取数据,而不是从缓存寄存器中读取。

     

    有一个面试题这样问: 一个参数既可以是const还可以是volatile吗?

    A:当然可以了,看上面高亮的代码,只读的状态寄存器加上const表示不能被程序修改。

    多说几句,volatile关键字的应用场景:

    1)并行设备的硬件寄存器;2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);3)多线程应用中被几个任务共享的变量。

  • 相关阅读:
    体温上报系统
    Android开发概述和开发工具
    体温上报系统
    CSS padding(填充)
    CSS margin外边距实例
    CSS margin(外边距)
    CSS轮廓outline
    函数对象与闭包
    作业,3.19名称空间作用域
    名称空间/作用域
  • 原文地址:https://www.cnblogs.com/always-chang/p/6094259.html
Copyright © 2011-2022 走看看