在巨集定義中,# 運算子能將巨集參數轉換為字串字面常數,自動加上雙引號。
#include <stdio.h>
#include <stdlib.h>
#define IsMan(name) pr_value(#name, name)
#define WANGYONG 1
#define YONGXIN 2
void pr_value(char* name, int type) {
switch (type) {
case WANGYONG: printf("%s\n", name); break;
case YONGXIN: printf("%s\n", name); break;
}
}
int main() {
IsMan(WANGYONG); // 展開為 pr_value("WANGYONG", WANGYONG)
IsMan(YONGXIN); // 展開為 pr_value("YONGXIN", YONGXIN)
system("pause");
return 0;
}
WANGYONG YONGXIN
#define LOG_VAR(x) printf(#x " = %d\n", x)#define TEST_EQ(a,b) if((a)!=(b)) fail(#a " != " #b)#define CONCAT(a,b) a##b → CONCAT(var, 1) 展開為 var1。配合 # 可構建強大的元編程工具。
作者:RunBoying