打印表达式并对其求值的宏(使用 __STRING)

2024-04-07

为了学习和演示,我需要一个打印其参数的宏and对其进行评价。我怀疑这是一个非常常见的案例,甚至可能是一个常见问题解答,但我找不到实际的参考资料。

我当前的代码是:

#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))

进而:

PRINT(x & 0x01);

它工作正常,但我不确定 __STRING 宏的合法状态,特别是因为它位于私有 __ 命名空间中。

所以,我的问题是:

  1. 有没有更好的方法来编写这个宏?
  2. __STRING 是标准/伟大/邪恶吗?
  3. 如何利用现有的搜索工具来查找__STRING? SO 的搜索引擎只搜索包含字符串的任何内容:-(

就像是

#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", #expr, (expr)))

可能就是你想要的。 # 是字符串化运算符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印表达式并对其求值的宏(使用 __STRING) 的相关文章

随机推荐