什麼是C++巨集

C++ 巨集所使用的語言不屬於C語言的範疇,而是Preprocessor所使用的語法。在這篇文章初步認識了Preprocess語法,那這篇要接續認識C++巨集。

巨集是以符號代表一系列操作,用法類似函數,但是巨集指令參數直接取代巨集本體部分的代號,因此沒有資料型態檢查的功能,比較沒有保障。而習慣上會將巨集本體的代號(下例的xy)都置於()內,如:

1
#define PRODUCT(x,y) ((x)*(y))

(Note:xy加入了()變為(x)(y)是因為運算優先權的問題,展開即可以看得出來。)

而在preprocess語法中,在參數前加入#能夠使程式輸出參數本尊, \ 所代表的是連續記號,這個則有助於撰寫多行的巨集,如:

1
2
3
4
#define Showvalue(x){    \
cerr << #x << "的值為 "<< x << endl; \
cerr << "按enter鍵繼續。" << endl; \
}

在主程式中:

1
2
double F1= 12.5;
Showvalue(F1)

輸出為:

1
2
F1的值為12.5
按enter鍵繼續。

reference: <<C++程式設計與應用>>