1. 程式人生 > >C語言宏定義##連接符和#符的使用

C語言宏定義##連接符和#符的使用

ken name 通過 屬於 wid 概念 整體 bubuko 左右

1. 關於宏(Macro)

屬於編譯器預處理的範疇,屬於編譯器概念(而非運行期概念)。

2. 關於#

  • #的功能:是 將其後面的宏參數進行 字符串化操作(Stringfication),即:在對它所引用的 宏變量 通過替換後在其左右各加上一個雙引號。

如下:

技術分享圖片

技術分享圖片

這樣每次divider(除數)為0的時候便會在 標準錯誤流 上輸出一個提示信息。

3. 關於##

##被稱為連接符(concatenator),用來將兩個Token連接為一個Token。註意,這裏連接的對象是Token即可,而不一定是宏的變量。

技術分享圖片

技術分享圖片

  • int NAME(a); int NAME(b); 在經過預處理後這一聲明變為:int int_namea; int int_nameb;

  • 可以看出,預編譯時,宏參數n被替換,並和name連接成一個整體,然後整體替換NAME宏。

C語言宏定義##連接符和#符的使用