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)多线程应用中被几个任务共享的变量。

  • 相关阅读:
    当前毫秒时间戳
    生成随机指定长度的字符串
    symfony框架学习
    Git 学习一
    jmeter逻辑控制器
    jmeter执行顺序及作用域规则
    jmeter常用测试元件
    windows环境下jmeter生成测试报告
    jmeter参数化
    对网页进行截图(selenium)
  • 原文地址:https://www.cnblogs.com/always-chang/p/6094259.html
Copyright © 2011-2022 走看看