【发布时间】:2014-10-01 11:35:30
【问题描述】:
C 中有没有一种方法可以使用宏从字符文字创建字符串文字?
例如我有
'a'
我想创建字符串文字
"a"
澄清问题:
#define A 'a'
write(fd, "x=" CHAR2STRING(A) "\n", 4);
我的问题是如何定义宏 CHAR2STRING
【问题讨论】:
-
内联宏? (没有var decls)?我也很好奇,一个是两个
char宽,另一个是一个。您可能建议将 second 字符(终止符)存储在哪里?甚至不打算将一个 eval'ing 作为地址,这仍然需要解决。 -
@WhozCraig - 它应该在编译时进行评估。我希望它的存储方式与我在代码中直接使用“a”的方式相同(而不是指示编译器生成它)。
-
而
A宏必须是字符字面量,不能是其他字符,例如 97 或 0x61?你不能通过将A设为字符串文字并为A的其他用途编写一个STRING2CHAR(A)宏来做相反的事情吗? -
我认为这是不可能的。但是,您可以定义
a,然后从中生成'a'和"a"。 -
@mafso
*"a"而不是'a'。
标签: c c-preprocessor