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

 

posted @ 2016-11-23 16:47  Acelit  阅读(634)  评论(0编辑  收藏  举报