【发布时间】:2017-02-25 11:51:49
【问题描述】:
C 预处理器有一个名为stringification 的功能。这是一项允许从宏参数创建(窄)字符串文字的功能。可以这样使用:
#define PRINTF_SIZEOF(x) printf("sizeof(%s) == %d", #x, sizeof(x))
/* stringification ^^ */
使用示例:
PRINTF_SIZEOF(int);
...可能会打印:
sizeof(int) == 4
如何从宏参数创建 wide 字符串文字?换句话说,我该如何实现WPRINTF_SIZEOF?
#define WPRINTF_SIZEOF(x) wprintf( <what to put here?> )
【问题讨论】:
-
自我回答很好,但之前已经多次回答/讨论过这个问题。在这里查看一个:stackoverflow.com/questions/216875/…
-
我实际上找不到骗子。
-
@P.P.我看不出你的意思。如果您说提供的问题是重复的,我强烈反对。否则,请提供指向副本的链接。
-
您的问题并不是关于宽字符串,而是关于如何将两个标记放在一起。如果您搜索 token concatenation 和 token pasting,则有 529 和 714 个匹配项。我当然对找到一个你喜欢的骗子不感兴趣。但“重点”是没有什么新的/有趣的东西需要一个新的帖子(这只是 SO 上的一大堆骗子中的另一个)。
-
我创建这个问题并不是为了收集独角兽积分,而是因为我在 stackoverflow 上找不到我的问题的答案。我唯一关心的是在我正在处理的项目中对宏参数进行宽字符串化(我的环境缺少窄字符 printf)。我不知道答案是使用令牌连接。你更有经验;你确实知道。但是像“你的问题 X 没有意义;你需要做的就是搜索 Y,Y 是你问题的答案”这样的论点是荒谬的。
标签: c++ c string macros c-preprocessor