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

 //file--func1.h

 #ifndef  __FUNC1_H  //__func1_h   //可小写可大写

 #define   __FUNC1_H  //__func1_h

  ...

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

最新文章

  1. UIToolbar 莫名黑线条 隐藏办法
  2. 慕课网Java高并发秒杀学习
  3. [转]Tomcat----Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  4. 再谈CocoaPods
  5. Asynchronously with NSURLConnection
  6. github 查看单个文件的历史记录命令
  7. 【关于php】Appserv的安装注意事项
  8. 如何将你牛逼的iOS代码分享到CocoaPod(转)
  9. J - 搞笑版费马大定理
  10. Redis Sentinel中的机制与原理详解
  11. Mybatis批量插入、批量更新
  12. 《Java程序设计》win10系统学前准备
  13. 用python连接mysql失败总结
  14. ArcGIS案例学习笔记_3_2_CAD数据导入建库
  15. Python mysql-表的创建,删除和更新
  16. C#对json数据的解析
  17. Silverlight 之 新建项目解析
  18. 异常:Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details.
  19. C++堆和栈详解(转)
  20. list容器详解

热门文章

  1. gpg: symbol lookup error
  2. jquery为动态添加元素绑定点击事件
  3. js上传控件 plupload 使用记录
  4. jquerymobile动态添加元素之后
  5. kettle的job中使用循环
  6. 关于selenium IDE找不到元素bug
  7. The.first.glance.at.linux.commands
  8. C语言 百炼成钢26
  9. smartJS 0.1 API 讲解 - PromiseEvent
  10. 首次接触XAMPP,端口被占用困恼