網頁

2017年10月10日 星期二

前置處理器 指示詞

Preprocessor directives
前置處理器 指示詞(Preprocessor directives)用#(hash sign)來表示。在編譯開始前,前置處理器會先檢視指示詞。因為前置處理器 指示詞沒有用;(semicolon)做結尾,所以前置處理器只能解析一行code為基準,若超過一行要在末行加上\(backslash)。

macro definitions (#define, #undef)
#define identifier replacement
當前置處理器看到這個指示詞,會將code裡任一個identifier用replacement取代,可以是expression, statement,block或者simply anything。

ex
1
2
3
#define TABLE_SIZE 100
int table1[TABLE_SIZE];
int table2[TABLE_SIZE];

 
#define getmax(a,b) a>b?a:b

1
2
3
4
5
#define TABLE_SIZE 100
int table1[TABLE_SIZE];
#undef TABLE_SIZE
#define TABLE_SIZE 200
int table2[TABLE_SIZE];

function macro definitions兩種特別運算元#和##在replacement。#後面的參數名字會被字串字母的引數取代 (就像是被雙引號框住)。
1
2
#define str(x) #x
cout << str(test);

##連接兩個引數使他們之間沒有空白
1
2
#define glue(a,b) a ## b
glue(c,out) << "test";
參考文獻

沒有留言:

張貼留言