此代码正确执行
#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)
我只是替换了第一个段编码的第一个宏..但它不起作用
使用该#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)