C中的'#'运算符是什么?

Ble*_*mer 2 c operators operator-keyword

C中有'#'运算符吗?

如果是,那么在代码中

enum {ALPS, ANDES, HIMALYAS};
Run Code Online (Sandbox Code Playgroud)

以下将返回什么?

 #ALPS 
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 18

C语言没有#运算符,而是预处理器(处理#include#define执行的程序).预处理器简单成为#ALPS字符串"ALPS".

但是,此"stringify"运算符只能用于#define预处理器指令.例如:

#define MAKE_STRING_OF_IDENTIFIER(x)  #x
char alps[] = MAKE_STRING_OF_IDENTIFIER(ALPS);
Run Code Online (Sandbox Code Playgroud)

预处理器将以上示例转换为以下示例:

char alps[] = "ALPS";
Run Code Online (Sandbox Code Playgroud)

  • 你的答案可能更清楚:`#ALPS`单独会触发错误"无效的预处理指令".但是,当使用时:`#define TEST(X)#X`然后`TEST(ALPS)`将输出'"ALPS"`. (3认同)

Moo*_*ice 5

#C 中没有运算符#。前缀用于描述预处理器指令。

请参阅: http: //en.wikipedia.org/wiki/C_preprocessor