說到#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";
再來看#@x,其實就是給x加上單引號,結果返回是乙個const char。舉例說:
char a = tochar(1);結果就是a='1';
做個越界試驗char a = tochar(123);結果是a='3';
但是如果你的引數超過四個字元,編譯器就給給你報錯了!error c2015: too many characters in constant :p
最後看看#x,估計你也明白了,他是給x加雙引號
char* str = tostring(123132);就成了str="123132";
#define dec(x,y) (x-y)
int n = dec( a(123,1), 1230);
n = conn(123, conn(123,332) );
char* str = a("12", tostring( dec(3,1));
結果會如何呢? 嘿嘿嘿嘿~
define用法,C語言 define詳解
c語言中,可以用 define 定義乙個識別符號來表示乙個常量。其特點是 定義的識別符號不佔記憶體,只是乙個臨時的符號,預編譯後這個符號就不存在了。預編譯又叫預處理。預編譯不是編譯,而是編譯前的處理。這個操作是在正式編譯之前由系統自動完成的。用 define 定義識別符號的一般形式為 define ...
C語言 define用法
define用法及注意事項 1.一般形式 define 識別符號 記號序列 例 define g 9.8 2.帶引數形式 define 識別符號 識別符號表 opt 記號序列 例 define square x x x 注意事項 注意括號使用,不然可能會出現歧義,如果定義成 define squar...
c語言define的用法
1 define的簡單定義作用 define相當於乙個簡單的文字替換,對於普通的常量定義,我就不必多說了,但是對於類似於函式定義的形式,可能會出現錯誤,例如 define add x,y x y 用到 中時會出現問題,比如計算式子c add x,y d,本意是計算出x與y的和之後在分別與c,d做乘積...