巨集定義中的特殊符號

2021-09-24 13:53:47 字數 780 閱讀 2487

1. #(字串化操作,自動將巨集引數字串化),例如:

#define tostring(x) #x

char* str = tostring(123132); // str = "123132"

2. ##(引數連線操作,即允許巨集引數連線其他符號,構成新的引數,##的左右符號必須能夠組成乙個有意義的符號),例如:

#define conn(x, y) x##y

int n = conn(123, 456); // n =123456

char* str = conn("asdf", "adf"); // str = "asdfadf"

3. #@(引數字元化操作,將巨集引數字元化,取引數中的最後乙個字元,引數超過四個字元報錯),例如:

#define tochar(x) #@x

char a = tochar(1); // a = '1'

char a = tochar(123); // a = '3'

4. \(行繼續操作,當定義的巨集不能用一行表達完整時,可以用\表示下一行繼續此巨集的定義,最後一行不要加\)

5.__va_args__(用來接受不定數量的引數),例如:

#define eprintf(...) fprintf (stderr, __va_args__)

eprintf ("%s:%d: ", input_file, line_no) // fprintf (stderr, "%s:%d: ", input_file, line_no)

C C 巨集的特殊符號

在c c 中,巨集定義是由define完成的,define中有三個特殊的符號值得我們注意 1.在巨集展開的時候會將 後面的引數替換成字串,如 define p exp printf exp 呼叫p asdfsadf 的時候會將 exp換成 asdfsadf 2.將前後兩個的單詞拼接在一起。例如 th...

perl中特殊符號

陣列 x x名字前面是美元符號 後面是花括號 則其為 hash 元素 要引用整個 hash,使用百分號 作為字首。前面幾頁中使用的 hash 的名字為 family name。系統產生的一些可讀的資訊,也可能是出錯的資訊 子函式引數變數自己本身 子程式的私有變數 x 呼叫子函式x 資料輸入.如果沒有...

Bat 中特殊符號

隱藏命令的回顯。在for中表示使用增強的變數擴充套件 在set中表示使用擴充套件環境變數指定位置的字串 在set a中表示按位取反。使用兩個 包含乙個字串表示引用環境變數。比如乙個 time 可以擴充套件到當前的系統時間 單個 緊跟0 9的乙個數字表示引用命令列引數 用於for中表示引用迴圈變數 連...