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

标签 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;
}

但是这段代码没有执行

#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/

相关文章:

c - 在学生数组中查找字段的最大数量

c - 在 C 中标记电话号码

c - 像阅读文本一样逐行阅读图像

c - Swift调用C API时如何处理指针

c - 如何防止 get() 和 set() 之间的竞争条件行为?

c - 尝试使用 scanf() 获取多个变量

c - C : Binary files 上的文件操作

c - 具有请求超时的 libevent http 客户端

c - 让它更容易?

c - 未定义的数组成员不为零! (C)