重读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

更复杂版本:

重读C库之宏定义

重读C库之宏定义

3.#undef作用

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

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

重读C库之宏定义

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

重读C库之宏定义

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

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

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

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

原文链接: https://www.cnblogs.com/always-chang/p/6094259.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/244457

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午12:08
下一篇 2023年2月14日 上午12:08

相关推荐