1.define的多行定義
define可以替代多行的**,在每乙個換行的時候加上乙個"\"
#define max(x,y) do while(0) /* (no trailing ; ) */ \
例子:
#define fzuserinforeset \
[[nsuserdefaults standarduserdefaults] setobject:kdefaultusername forkey:key_username];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_logintoken];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_memberid];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_headimage];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_gender];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_newmessage];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_roletype];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_tag];\
[[nsuserdefaults standarduserdefaults] removeobjectforkey:key_bindingtag];\
[[nsuserdefaults standarduserdefaults] setobject:@"0" forkey:key_usercash];\
[[nsuserdefaults standarduserdefaults] setobject:@"0" forkey:key_usercredits];\
[[nsuserdefaults standarduserdefaults] setobject:@"0" forkey:key_usertickets]
2.在大規模的開發過程中,特別是跨平台和系統的軟體裡,define最重要的功能是條件編譯。
#ifdef windows
......
......
#endif
#ifdef linux
......
......
#endif
可以在編譯的時候通過#define設定編譯環境
3.帶引數的巨集
#define 識別符號(x1,x2,x3...xn) 替換列表 (注意:x1,x2,x3..是巨集的引數,識別符號和其左括弧之間不能有空格)
使用方法:
#define max(x,y) ((x)>(y)?(x):(y))
i=max(j+k,m-n);
替換為:
i=max((j+k)>(m-n)?(j+k):(m-n));
#define si_ex(n) ((n)%2==0)
if(si_ex(i)) i++;
替換為:
if(si_ex((i)%2==0))
通過以上例子我們可以看出,識別符號帶引數(x1,x2,x3.....)在替換時會被替換列表(y1,y2,y3....)對應的替換,但是和順序無關。
例子:
#define fzuserinfowithkey(key)\
[[nsuserdefaults standarduserdefaults] objectforkey:key]
C巨集 define的一些用法
c語言中的 define命令,在編譯預處理時進行簡單的字元替換。其使用的一般形式為 define 識別符號 字串 其中的 表示這是一條預處理指令。凡是以 開頭的均為預處理命令。define 為巨集定義命令。識別符號 為所定義的巨集名。字串 可以是常數 表示式 格式串等。1.最常見的一種用法也是最簡單...
C語言的一些特殊用法 define
很久沒有寫blog了 不知道寫什麼好,就寫寫大家比較容易忽略的東西吧一 特殊的字串巨集 cpp define a x t x define b x x define c x x我們假設x 1,很久沒有寫blog了 不知道寫什麼好,就寫寫大家比較容易忽略的東西吧 一 特殊的字串巨集 cpp defin...
一些你也許不知道的 define 用法
define conn x,y x y define tochar x x define tostring x x x y表示什麼?表示x連線y,舉例說 int n conn 123,456 結果就是n 123456 char str conn asdf adf 結果就是 str asdfadf 怎...