[C++] 宏定義中的 # 和 ##運算符

宏定義中的 # 和 ## 運算符

代碼

#include <iostream>

using namespace std;

class classAttack {
};

// 構串操作符 # 只能修飾帶參數的宏的形參, 它將實參的字符序列(而不是實參代表的值)轉換成字符串常量.
#define STRING(x) #x #x #x
#define TEXT(x) "class" #x "info"
// 合併操作符 ## 將出現在其左右的字符序列合併成一個新的標識符(注意, 不是字符串)
// 當使用合併操作符 ## 時, 產生的標識符必須預先有定義, 否則編譯器會報 "標識符未定義" 的編譯錯誤.
#define CLASS_NAME(name) class##name

int main()
{
	int abc = 10;
	cout << STRING(abc) << endl;
	cout << TEXT(abc) << endl;

	CLASS_NAME(Attack) a;

	return 0;
}

輸出

abcabcabc
classabcinfo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章