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;
}