C++宏是C/C++語言中的一種特性,它允許程式設計師定義一個標識符(宏名),並將其替換為指定的字元串(替換文本)。宏可以分為不帶參數的宏定義和帶參數的宏定義。不帶參數的宏定義格式為:
```c++
#define 標識符 字元串
```
其中,標識符被稱為宏名,而被定義的字元串稱為替換文本。宏展開的過程是將宏名替換為字元串。帶參數的宏定義格式為:
```c++
#define 宏名(參數表) 字元串
```
在帶參數的宏定義中,宏名後跟一對圓括弧,括弧中列出參數列表,這些參數在宏展開時會被代換。宏定義的末尾不加分號,並且宏定義通常寫在函式的花括弧外邊,其作用域為其後的程式,通常在檔案的最開頭。宏定義可以嵌套,但字元串中的宏不會被展開。宏定義不分配記憶體,而變數定義時會分配記憶體。宏定義可以由#undef命令終止其作用域。
宏的一個常見用途是定義符號常量,例如定義圓周率PI,之後在代碼中可以使用`PI`來代替具體的圓周率值。宏可以提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤,並便於修改。例如,數組大小常用宏定義,因為這樣可以避免在代碼中重複輸入相同的值。