C/C 通過 #define 命令定義一個宏,即用一個標識符來標識一個字符串,也稱為“宏”。
#define HELLO 666
這樣HELLO就是定義為666,所有用到HELLO的地方,在預處理時都會被替換為666。
使用 define 定義宏的基本用法見:
這里主要介紹下宏定義中的特殊操作符,包括:#、##、... 和 __VA_ARGS__。
1、字符串化操作符 #
當需要把宏的參數 x 轉換為字符串時,使用 #x 可以把參數名 x 轉換成相應的字符串,該過程稱為字符串化。
2、標記粘貼操作符 ##
標記粘貼運算符(##)可以合并宏中的兩個標識符,即把宏定義中兩個獨立的標識符合并為一個標識符。
3、可變參數宏 ... 和 __VA_ARGS__
__VA_ARGS__ 是一個可變參數宏,與省略號 ... 配合使用,用來替換省略號所代表的字符串。
需要注意的是,省略號 ... 只能放在宏參數列表中的末尾。
在實際應用中,上面幾個特殊操作符經常用于日志的分級處理,還有下面幾個宏:
__FILE__:當前源文件名稱;
__LINE__:當前行號;
__FUNCTION__:當前函數名稱。
還木有評論哦,快來搶沙發吧~