printf语句中的#符号不起作用

Gop*_*i M 1 c

此代码正确执行

#include<stdio.h>
#define JOIN(s1, s2) printf("%s=%s %s=%s \n", #s1, s1, #s2, s2);

int main()
{
    char *str1="India";
    char *str2="BIX";
    JOIN(str1, str2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码没有执行

#include<stdio.h>

int main()
{
    char *str1="India";
    char *str2="BIX";
    printf("%s=%s %s=%s \n", #str1, str1, #str2, str2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我只是替换了第一个段编码的第一个宏..但它不起作用

Bil*_*nch 8

使用该#var功能导致"var"是预处理器的一部分,因此您只能将其用作宏的一部分.

如果你想继续使用它,通常人们会写一个名为STRINGIFY的宏:

#define STRINGIFY(x) #x
Run Code Online (Sandbox Code Playgroud)

在你的情况下,最好的事情可能就是自己做引用.

char *str1="India";
char *str2="BIX";

printf("%s=%s %s=%s \n", "str1", str1, "str2", str2);
Run Code Online (Sandbox Code Playgroud)