1)取出兩個數值中的最小值
#define min(a,b) (((a)>(b))? (b):(a))
2)用巨集定義實現乙個32 int型別變數 取絕對值
#define abs(n) (((unsigned int)n>>31 == 0x1) ? (-n):(n))
#define abs2(n) ((n ^ (n >> 31)) - (n >> 31))
3)在上面定義的基礎上,進而可以實現不用大於號的方式實現比較兩個變數的大小
#define min(a,b) (abs((a)-(b)) == ((a)-(b)))? (b):(a)
4)重複包含標頭檔案的問題
#ifndefined __abc_file_h__
#define __abc_file_h__
//標頭檔案內容
#endif
5)用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)
#define seconds_per_year (60 * 60 * 24 * 365)ul
6)關於define # 的用法 (define 與字串處理)
eg.#define sample(***) \
do \
while(0)
1、輔助定義複雜的巨集,避免引用的時候出錯 //是否可以用大括號代替 {}?
2、優化替代goto語句,實現對程式流程更好的控制
3、避免空巨集引起的warning //是否可以用大括號代替 {}?
4、定義乙個單獨的函式塊來實現複雜的操作 //是否可以用大括號代替 {}?
int foo()
dosomething...;
if(error)
dosomething...;
end:
free(ptr);
return 0;
}int foo()
dosomething...;
if(error)
dosomething...;
}while(0);
free(ptr);
return 0;
}
c語言32個關鍵字 define
1 防止乙個標頭檔案被重複包含 當我們的程式很大很大時,比如超過20000行時,我們很可能沒有辦法對所有的檔案都有清楚的了解,特別是.h 檔案,那麼我們怎麼做才能避免include時重複包含呢 答案就是 define 如下 a.h b.h c.h 三個檔案 a.h 內容 int variable a...
C語言關鍵字
c語言關鍵字 在檔案範圍的教訓和關鍵字,你知道靜態變數保持他們的價值觀,甚至不在他們超出範圍的破壞。比如說呢。int generateid int main this program prints 01 2 請注意,s nid一直保持它的價值的跨多個函式呼叫。static關鍵字有另一種意思當應用到全...
C語言關鍵字
關鍵字就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名 函式名等 由ansi標準定義的c語言關鍵字共32個 auto double int struct break else long switch case enum register typedef char extern...