关于这个问题Quote macro for defining string,我想打印一个宏常量的值,例如下面的代码:
#include<stdio.h>
#define X 4
#define Tostring(x) #x
main()
{
printf(Tostring(X));
}
它是printng X
而不是4,但是使用Quote macro for defining string我知道如何纠正它,但是有人可以解释这里的锣声是什么吗?
要打印4,您可以选择以下之一:
将结果字符串化:
#include<stdio.h>
#define Tostring(x) str(x)
#define str(x) #x
#define X 4
int main()
{
printf(Tostring(X));
}
或使用类似宏的函数将X转换为int:
#include<stdio.h>
#define X 4
#define Tostring(x)(X)
int main()
{
printf("%d\n", Tostring(X));
}
第一个示例是documentation中给出的示例之一。声明如果要对宏扩展的结果进行字符串化,则应使用两个级别的宏。扩展的结果如下:
Tostring(X)->托克斯(4)->力量(4)->“ 4”
在第二个示例中,您将Tostring宏的参数与#define X 4
中的X相关联,因此可以将值打印为整数。