这段代码正确执行
#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;
}
但是这段代码没有执行
#include<stdio.h>
int main()
{
char *str1="India";
char *str2="BIX";
printf("%s=%s %s=%s \n", #str1, str1, #str2, str2);
return 0;
}
我刚刚替换了第一段编码的第一个宏..但它不起作用
最佳答案
使用 #var
功能生成 “var”
是预处理器的一部分,因此您只能将其用作宏的一部分。
如果您想继续使用它,通常人们会编写一个名为 STRINGIFY 的宏:
#define STRINGIFY(x) #x
但在您的情况下,最好的办法可能是自己引用。
char *str1="India";
char *str2="BIX";
printf("%s=%s %s=%s \n", "str1", str1, "str2", str2);
关于c - # printf 语句中的符号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25015717/