define的一些使用方法

2021-07-04 04:13:35 字數 1464 閱讀 2668

1.可以對一些常量、字串進行巨集定義,在預處理過程中進行替換,而不是在編譯過程中。

#define pi 3.1415926

2.也可以對資料型別進行巨集定義,這樣與

typedef

效果相同

typedef為

c語言的關鍵字,作用是為一種資料型別定義乙個新的名字。

typedef unsigned char uchar; (typedef需要在後邊加乙個;)

3.帶引數的巨集

#define add(a,b) ((a)+(b))

盡量在使用的時候全部加上括號,如果不加括號將會存在安全隱患。

例如出現這種情況 

#define add(a,b) (a)+(b)

add(2,3)*add(4,5) 

進行替換之後就會出現這樣的情況 2+3*4+5 

這肯定不是我們想要的結果。

#define mul(a,b)  (a*b)

mul(5+3,4+6)  替換之後

5+3*4+6   

這也不是我們想要的結果

所以在使用帶引數的巨集的時候,加括號是必須的。

4.define的多行定義

define可以替代多行的**,例如mfc中的巨集定義

#define macro(arg1, arg2) do  while(0) /* (no trailing ; ) */

關鍵是要在每乙個換行的時候加上乙個"/"

5.在大規模的開發過程中,特別是跨平台和系統的軟體裡,

define

最重要的功能是條件編譯。

就是:#ifdef windows

......

......

#endif

#ifdef linux

......

......

#endif

可以在編譯的時候通過#define

設定編譯環境。 6.

防止乙個標頭檔案被重複包含

由於標頭檔案包含可以巢狀,那麼c

檔案就有可能多次包含同乙個標頭檔案,就可能出現重複定義的問題的。

通過條件編譯開關來避免重複包含(重複定義)

#ifndef 

__func_h__

#define 

__func_h__

//標頭檔案內容

#endif

由於標頭檔案包含可以巢狀,那麼c

檔案就有可能多次包含同乙個標頭檔案,就可能出現重複定義的問題的。通過條件編譯開關來避免重複包含(重複定義)。因為當它編譯第乙個標頭檔案時總是沒有定義

#define 

__func_h__

,那麼它將編譯一遍標頭檔案中所有的內容,包括定義#define 

__func_h__

。這樣編譯再往下進行時如果遇到同樣要編譯的標頭檔案,那麼由於語句#ifndef 

__func_h__

的存在它將不再重複的編譯這個標頭檔案。

DateTime的一些使用方法

1 datetime 數字型 system.datetime currenttime new system.datetime 1.1 取當前年月日時分秒 currenttime system.datetime.now 1.2 取當前年 int 年 currenttime.year 1.3 取當前月 ...

NSString的一些使用方法

else 6.拼接字串 nslog string1 7.替換字串 1.直接替換字串 string3 stringbyreplacingoccurrencesofstring 男 withstring ff nslog string1 2.給定範圍替換 nsrange range string6 st...

sed的一些使用方法

用sed如何輸出指定範圍的行,輸出的是1 5行 sed n 1,5p filename 如果要求輸出的是1,9,11,33行 sed n 1p 9p 11p 33p urfile 替換 sed i s xmx4096m xmx2048m g mapred site.xml 注釋 把全文的 xmx40...