1. 程式人生 > >define 語句中的 # 和 ## 的作用與區別

define 語句中的 # 和 ## 的作用與區別

如題,特此記錄:

# 是把引數字串化,## 是將兩個引數連為一個整體。

自己寫了一份測試程式碼,兩者之間的差別清晰可見:

#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