我有许多字符串值(查找键),它们组合为X.Y.Z,其中X和Y是硬编码字符串,Y是单个值。我正在尝试编写一个宏测试(Y),它给了我X.Y.Z
示例:
TEST(hello) -> X.hello.Z
TEST(foo) -> X.foo.Z
到目前为止,我所有的尝试都导致了未扩展的值,或者错误:粘贴"你好"和"。"不提供有效的预处理令牌'。我已经尝试了几层间接,但我想我还没有完全理解它是如何工作的: - (
答案 0 :(得分:1)
你好吗?使用##
将无效,因为##
用于创建单个令牌。
#define TEST(a) X.a.Z
应该这样做。
编辑:错误,这将为您创建令牌,而不是字符串。如果您正在构建字符串,@ paddy的答案就是您想要的。
答案 1 :(得分:1)
如果处理常量,则只能在宏中执行此操作。 ie 如果您传递的hello
实际上是您想要的字符串,而不是包含字符串的变量。
#define TEST(s) ("X." #s ".Y")