在C中使用宏

the*_*t33 2 c c-strings

我试图将输出生成为双引号输入.例如,如果在str()中传递的参数是某个名称,那么输出应该是"name",这不会出现在下面的代码中.

#include<stdio.h>
#include<string.h>
#define str(s) #s
#define newline printf("\n")

int main()

{

  printf("Your double quoted code is : %s ",str(GHOST));
  newline;
}
Run Code Online (Sandbox Code Playgroud)

输出:GHOST

Chr*_*eck 8

正在发生的事情是,报价被添加,但它们消耗作为语言的语法的一部分.因为,你需要传递一个字符串喜欢"GHOST"printf,不只是一个标识符.

如果你想在运行程序时出现引号,我会成功

printf("Your double quoted code is : \"%s\" ",str(GHOST));
Run Code Online (Sandbox Code Playgroud)

代替.格式字符串中的转义引号将显示在输出中.


Isa*_*a A 5

您应该将格式编辑为 \"%s\"