为了学习和演示,我需要一个宏来打印其参数并对其进行评估。我怀疑这是一个非常常见的案例,甚至可能是一个常见问题解答,但我找不到实际的参考资料。
我目前的代码是:
#define PRINT(expr) (fprintf(stdout, "%s -> %d\n", __STRING(expr), (expr)))
进而:
PRINT(x & 0x01);
它工作正常,但我不确定 __STRING 宏的法律地位,特别是因为它位于私有 __ 命名空间中。
所以,我的问题:
- 有没有更好的方法来编写这个宏?
- __STRING 是标准的/伟大的/邪恶的吗?
- 如何使用现有的搜索工具查找有关 __STRING 的信息?SO的搜索引擎只搜索包含字符串的任何内容:-(