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