1。使用位操作的方法(在嵌入式系统设计中) 一种极高可移植性的方法,使用#define 和 bit masks,如: #define BIT2 (0x1 <<2) static int a; void Set_bit2(void) { a |= BIT2;} void Clear_bit2(void) { a &= ~BIT2;} 2. 要求设置一绝对地址为0x67a9的整型变量的值为0XAA66,典型代码如下: int *ptr; ptr = (int *)0x67a9; *ptr = 0xaa66; 或者较不太好的方法: *(int * const)(0x67a9) = 0xaa66; 3. 在中断中不能传递函数,不能返回一个值,在中断中一般不要做浮点运算。 4。注意C语言中的整型数自动转换原则,当有符号类型和无符号类型时,所有的操作数都自动转换为无符合类型。 5。关键字" volatile" 的几个问题: (1) 一个参数既可以是CONST,还可以是volatile吗?是的,例如只读的状态寄存器,它是volatile,因此可以被意想不到地改变,它是const,困此不能程序去修改。 (2)一个指针可以是volatile吗? 是的,一个例子就是一个中断服务子程序修改一个Buffer的指针。 6。关键字const的含义: const int a ; //a是一个常整型数 int const a; //a是一个常整型数 const int *a; //a是一个指向常整型数的指针 int * const a; //a是一个指向整型数的常指针 int const *a const; //a是一个指向常整型数的常指针 7。 用变量"a" 给出下面的定义。 (1) 一个整型数: int a; (2) 一个指向整型数的指针: int *a; (3) 一个指向指针的指针,它指向的指针是个整型数:int **a; (4) 一个有10个整型数的数组: int a[10]; (5) 一个有10个指针的数组,该指针是指向一个整型数的: int *a[10]; (6) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数:int (*a)(int). (7) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数:int (*a[10])(int).
[此贴子已经被作者于2007-1-2 20:52:41编辑过] |