0

我有许多字符串值(查找键),它们组合为 XYZ,其中 X 和 Y 是硬编码字符串,而 Y 是单个值。我正在尝试编写一个给我 XYZ 的宏 TEST(Y)

例子:

TEST(hello) -> X.hello.Z
TEST(foo) -> X.foo.Z

到目前为止,我所有的尝试都导致了非扩展值,或者'错误:粘贴“hello”和“。” 没有提供有效的预处理令牌'。我已经尝试了几层间接,但我想我还没有完全理解它是如何工作的:-(

4

2 回答 2

2

你怎么试试这个?使用##将不起作用,因为##用于创建单个令牌。

#define TEST(a) X.a.Z

应该做的伎俩。

编辑:错误这将为您创建令牌,而不是字符串。如果您正在构建字符串,@paddy 的答案就是您想要的。

于 2013-11-06T21:27:03.553 回答
2

如果您正在处理常量,则只能在宏中执行此操作。 ,如果hello您传递的实际上是您想要的字符串,而不是包含字符串的变量。

#define TEST(s) ("X." #s ".Y")
于 2013-11-06T21:27:22.983 回答