【发布时间】:2023-04-01 00:03:02
【问题描述】:
我的 C 代码包含如下字符串。
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
现在 xstr (foo) 的评估结果正确为“4”。
但是 str(foo) 被评估为“foo”。但我认为它应该被评估为“4”。谁能解释一下它是如何被评估为“foo”的。
【问题讨论】:
-
正确原因:问题是当你有一个宏替换时,预处理器只会递归地扩展宏,如果字符串化操作符#和标记粘贴操作符##都没有应用于它。
标签: c