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).