#difine

#define 中的“ # 运算符”和“ ## 运算符”

隐身守侯 提交于 2020-03-02 08:02:58
1. 利用宏参数创建字符串:# 运算符 在类函数宏(function-like macro)的替换部分中,“#”符号用作一个预处理运算符,它可以把语言符号(token)转化为字符串。例如,如果 x 是一个宏参量,那么 #x 可以把参数名转化为相应的字符串。该过程称为 字符串化 。 说明:类函数宏就是带参数的宏。类函数宏的定义中,用圆括号括起来一个或多个参数,随后这些参数出现在替换部分。 #include <stdio.h> #define PSQR(x) printf("The square of " #x " is %d. /r/n", (x) * (x)) int main( void ) { int y = 5; PSQR(y); PSQR(2 + 4); return 0; } // 输出: The square of y is 25. // 用 "y" 代替 #x The square of 2 + 4 is 36. // 用 "2 + 4" 代替 #x #define STRING2(x) #x #define STRING(x) STRING2(x) #define WQ wangqi #pragma message(STRING2(WQ)) // WQ(字符串) #pragma message(STRING(WQ)) // wangqi(字符串) 2.