1. 主页
  2. 文档
  3. C语言教程
  4. C语言预处理器
  5. 编写一个打印 x 的 C 宏 PRINT(x)

编写一个打印 x 的 C 宏 PRINT(x)

乍一看,编写一个打印其参数的 C 宏似乎是小菜一碟。以下程序应该可以工作,即它应该打印x

#define PRINT(x) (x)
int main()
{ 
printf("%s",PRINT(x));
return 0;
}

但它会产生编译错误,因为x的数据类型,编译器将其作为变量,是未知的。现在看起来不那么明显了。不是吗?你猜怎么着,下面的也行不通

#define PRINT(x) ('x')
#define PRINT(x) ("x")

但是,如果我们知道 C 语言的一个鲜为人知的特性,那么编写这样的宏真的是小孩子的游戏。🙂在 C 中,有一个 # 指令,也称为“字符串化运算符”,它可以做到这一点。基本上 # 指令将其参数转换为字符串。瞧!剩下的事情就是这么简单。所以上面的程序可以修改如下。

#define PRINT(x) (#x)
int main()
{ 
printf("%s",PRINT(x));
return 0;
}

现在,如果输入是PRINT(x),它将打印x。事实上,如果输入是PRINT(52cxydh),它将打印52cxydh

 

 

这篇文章对您有用吗?