#在預處理中有3個特殊用法:字串定義、字串串聯和標誌貼上。
1)字串定義的完成是用 #指示,它容許設乙個識別符號並把它轉化為字串,然而字串串聯發生在當兩個相鄰的字串沒有分隔符時,在這種情況下字串組合在一起。在寫調
試**時,這兩個特徵是非常有效的。
例如,
#define print(x) cout<<#x " = " << x << endl
當我們在**中要列印乙個表示式的值,比如a+b+c時,就可以直接呼叫print(a+b+c).
列印結果是:a+b+c=10。
這比自己手工輸入**,要高效:
cout<<"a + b + c = " << x << endl
2)標示貼上
可以將兩個字串連線在一起,作為乙個新的識別符號。如下面定義:
#define field(a) char* a##_string; int a##_size
在給定的字串後分別連線_string和_size,構成新的識別符號。
如下面的類定義中:
class record ;
實際生成的變數為:one_string, one_size, two_string, two_size, three_string, three_size。
總之,預處理玩的是文字替換的遊戲,#相當於是佔位符的作用。
預處理器(巨集的用法)
編譯器在對巨集預處理時,會 1.將標頭檔案展開 2.去掉注釋 3.巨集替換 4.條件編譯 巨集替換時應注意的幾點 1 會把它兩邊的字元轉換為乙個字元 2 巨集要替換乙個函式或者引數時,需要加上 3 鄰近字元連線原則 4 value value指代乙個變數名,會將該字面值轉換為乙個字串 value 1...
C 預處理器指令的用法
c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1.定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...
C 預處理器指令的用法
c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1 定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...