二、define中的三個特殊符號:#,##,#@
#define conn(x,y) x##y
#define tochar(x) #@x
#define tostring(x) #x
(1)
x##y
表示什麼?表示x連線y,舉例說:
int n = conn(123,456); /* 結果就是n=123456;*/
char* str = conn("asdf", "adf"); /*結果就是 str = "asdfadf";*/
(2)再來看#@x,其實就是給x加上單引號,結果返回是乙個const char。舉例說:
char a = tochar(1);結果就是a='1';
做個越界試驗char a = tochar(123);結果就錯了;
但是如果你的引數超過四個字元,編譯器就給給你報錯了!
error c2015: too many characters in constant :p
(3)最後看看#x,估計你也明白了,他是給x加雙引號
char* str = tostring(123132);就成了str="123132";
c 中的巨集定義
一 不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串。掌握 巨集 概念的關鍵是 換 一切以換為前提 做任何事情之前先要換,準確理解之前就要 換...
C中的巨集定義
01 防止乙個標頭檔案被重複包含 ifndef comdef h define comdef h 標頭檔案內容 endif 02 重新定義一些型別,防止由於各種平台和編譯器的不同,而產生的型別位元組數差異,方便移植。typedef unsigned char boolean boolean valu...
C 中的巨集定義
1 stringizing 字串化操作符。其感化是 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定義中,且必須置於巨集定義體中的引數名前。xmlnamespace prefix o ns urn schemas microsoft com office of...