位定义、位段定义、register、volatile
翻看代码居然连当初的位定义高地位顺序都迷糊了,GTK代码包罗万象呀。
typedef struct
{
unsigned char no0:1; // 低位
unsigned char no1:1;
unsigned char no2:1;
unsigned char no3:1;
unsigned char no4:1;
unsigned char no5:1;
unsigned char no6:1;
unsigned char no7:1; // 高位
} __BIT8 ;
volatile union { unsigned char flags; __BIT8 flags_bit; } ;
#define stretch_flag flags_bit.no0
flags = 0; // 8位全都是0了
stretch_flag = 1; // flags = 00000001
看到volatile顺便想到register,etpan库中就遇到register类型的使用。顺便记一下。
register int 使用寄存器,对频繁的变量操作加速,一般用于数值算法,其实一般编程中没什么用。
volatile 指示此变量可由程序外部改变,比如读写串口寄存器。
这两个类型要看编译器如何对待他们了。
阅读(976) | 评论(1) | 转发(0) |