1.#pragma,是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的.
#pragma DATA_ALIGN( symbol,constant)
指令的作用是:排列排列symbol到constant指点的列边界上.
#pragma DATA_ALIGN( rxdata_stream, 128)
就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。
对齐的目的,一般是位了CACHE读写外存。
如果一个CACHE的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个CACHE行就够了。
char efd;
#prgma DATA_ALIGN(efd, 8)
编译时一定会把efd变量的地址安排在8字节对齐的位置上,也即efd地址的低3位一定为0。
2.#if 0,#if 1
一般来说,#if 0,#if 1多是用在调试的过程中。
在C语言中,我们开发过程中,如果让某一段代码不执行,我们用两种办法,一种是用“//"或者“/**/"屏蔽掉,另一种,就是用#if 0。。。。#endif方法来关闭,一般来说,老手都用后者,当调试完成后,会修改回#if(1),让代码回归在正常状态下。
所以,你这里的#if(1)应该是调试过的,之后又修改回来的结果。
3.static inline函数
程序执行时,处理器从Memory中读取代码执行。当程序中调用一个函数时,程序跳到存储器中保存函数的位置开始读取代码执行,执行完后再返回。
为了提高速度,C定义了inline函数,告诉编译器把函数代码在编译时直接拷到程序中,这样就不用执行时另外读取函数代码。
Static函数告诉编译器其他文件看不到这个函数,因此该函数只能在当前文件中被调用。Inline Static函数只能在当前文件中被调用,同时执行速度快,几个文件中都可以使用同样的函数名。
文章评论(0条评论)
登录后参与讨论