c语言中“#@”有什么用?
what is the use of "#@" in c language?
#
符号用于预处理器指令的开头(#ifdef
、#define
等)。 #
也用作字符串化运算符。
##
是令牌粘贴操作符。
然后在一次在线测验中我看到了这个:
#define MAKECHAR(operand) #@operand
#@
是什么运算符,它有什么用?
它类似于 stringify 标记 #
但是对于字符,它不是标准化的。例如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;
}
#
符号用于预处理器指令的开头(#ifdef
、#define
等)。 #
也用作字符串化运算符。
##
是令牌粘贴操作符。
然后在一次在线测验中我看到了这个:
#define MAKECHAR(operand) #@operand
#@
是什么运算符,它有什么用?
它类似于 stringify 标记 #
但是对于字符,它不是标准化的。例如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;
}