一般在函式的開頭都會有空指標檢測部分,這部分一般是巨集函式來實現的,最近客戶跟我抱怨說空指標都是同乙個列印,根本不知道哪個是空指標,於是我想起《c和指標》有這部分的介紹,複習了一番,我自己修改後的巨集函式如下:
root@ubuntu:/lianxi/lianxi_oj/macro# ./a.out
null pointer: p is found!
root@ubuntu:/lianxi/lianxi_oj/macro#
1 #include 2 #define testcheckpointer(ptr) do \
6 } while(0)
7 8 int main(int argc, char* ar**)
9
1.#define巨集替換《c和指標》p282
*在呼叫巨集時,首先對引數進行檢查,看看是否包含了任何由#define定義的符號,如果是,它們首先被替換
*替換文字隨後被插入到程式中原來文字的位置,對於巨集,引數名被它們的值所替代
*最後再對結果文字進行掃瞄,看看它是否包含了任何由#define定義的符號,如果是,重複上述過程
2."#"與"##"的作用
#:使用預處理器把巨集引數轉換為字串,#argument被預
C語言中 和
在c語言中,每個變數都是乙個記憶體位置,並且每個記憶體位置都定義了其位址,可以使用 運算子 進行訪問,該位址表示記憶體中的位址。a指標是乙個變數,其值是另乙個變數的位址,即儲存位置的直接位址。像任何變數或常量一樣,你必須在使用指標儲存任何變數位址之前宣告乙個指標。int ip pointer to ...
C語言中 和 用法
一 基本的用法 1 引數名以 作為字首則結果將被擴充套件為由實際引數的帶引號的字串。如 12 3456 78 define dprint expr printf expr d n expr intmain 上面的例子會列印出 a b 2 2 預處理器運算子 為巨集提供了一種連線實際引數的手段。如果替...
c語言中「 」和「 」區別
乙個豎槓 表示運算的或 二個豎槓 表示邏輯的或 c語言的位運算 取反,0取反是1,1取反是0 是左移,比如1 右移,類似左移,數值大小除以2的n次方 按位與,1與任意數等於任意數本身,0與任意數等於0,即1 x x,0 x 0 按位或,x y中只要有乙個1則結果為1 按位異或,x y相等則為0,不等...