前几天我遇到了this - 有人可以告诉我它是如何运作的吗?
一种简单的C字符串化方法 总预处理器常数 符合ANSI C(或任何 C ++编译器。)
假设您有一个头文件 包含像#define这样的常量 FIELD1_WIDTH 17.现在要构建 字符串“%17s”,告诉printf 场的宽度。如果你是一个 wimp,你可以使用格式字符串 “%* d”并传入FIELD1_WIDTH作为 第一个参数。但事实并非如此 解决其他问题。你也可以 想要将标识符字符串放入 你的程序给出的值 重要的常量,哪些字符串可以 找。换句话说,你必须是 能够将FIELD1_WIDTH翻译成 “17”。而且因为你会这样做 有一些不变的周围文字, 你想要一个宏来为你做这件事。
这很容易,几乎不值得 提。实际上,我撒了谎。它的 无法猜出可怕的黑客 这样做。就这样做:
#define STR(x) #x #define XSTR(x) STR(x)
然后使用XSTR(FIELD1_WIDTH)产生字符串 “17”。 XSTR的特别之处 神秘。
提示:STR(FIELD1_WIDTH)扩展为“FIELD1_WIDTH”,即 不是你想要的......
谢谢:)