#
符号在预处理器指令(#ifdef
,#define
等)的开头使用。 #
也用作字符串化运算符。
##
是令牌粘贴运算符。
然后在一个在线测验中我看到了:
#define MAKECHAR(operand) #@operand
#@
是什么运算符,它的作用是什么?
答案 0 :(得分:6)
它类似于字符串化标记#
,但对于字符来说却是标准化的。例如,clang / llvm不支持它。
以此类推:
#define MESSAGE(x) printf("%s: %d\n", #x, x)
int main(){
int i = 5;
MESSAGE(i); // expands to printf("%s: %d\n", "i", x)
return 0;
}
输出为:
i: 5
使用支持#@
的编译器,您可以编写:
#define MESSAGE(x) printf("%c: %d\n", #@x, x)
int main(){
int i = 5;
MESSAGE(i); // expands to printf("%c: %d\n", 'i', x)
return 0;
}