define 語句中的 # 和 ## 的作用與區別
阿新 • • 發佈:2018-12-18
如題,特此記錄:
# 是把引數字串化,## 是將兩個引數連為一個整體。
自己寫了一份測試程式碼,兩者之間的差別清晰可見:
#include <iostream> #include <cstdlib> // 測試不帶 # 號的效果 #define NO_NUMBER_SIGN(x) x // 測試一個 # 號的效果 #define SINGLE_NUMBER_SIGN(x) #x // 測試兩個 # 號的效果 #define DOUBLE_NUMBER_SIGN(x, y) x##y int main() { // 測試不帶 # 號的效果:hello 不加雙引號報錯(error C2065: “hello”: 未宣告的識別符號) std::cout << NO_NUMBER_SIGN("hello") << std::endl; // 測試一個 # 號的效果:world 加不加雙引號都可以,因為 # 將其字串化 std::cout << SINGLE_NUMBER_SIGN(world) << std::endl; // 測試兩個 # 號的效果:連線兩個物件 std::cout << DOUBLE_NUMBER_SIGN("wang", "ying") << std::endl; system("pause"); return 0; }
輸出:
hello world wangying