0

我需要一个使用整数的宏值的字符串。但它在任何函数之外,所以我不想创建一个变量。我在#pragma 评论中使用它。

所以是这样的:

#define num 7
#pragma comment(lib, "string" + num)

这将结合字符串和 num 使其成为 (#pragma comment(lib, "string7")

4

2 回答 2

4

你想要做的叫做stringification

#define stringify_1(x...)     #x
#define stringify(x...)       stringify_1(x)

#define NUM 7

char *p = stringify(NUM);

这是受Linux 内核助手中的__stringify 宏 in启发的。include/linux/stringify.h

于 2012-09-19T17:53:50.883 回答
3

我的意图并不完全清楚,这听起来像是一些预处理器功能: http: //gcc.gnu.org/onlinedocs/cpp/Stringification.html#Stringification

从该示例中,您会发现这个简洁的解释似乎是您想要的。

#define xstr(s) str(s)
#define str(s) #s
#define foo 4
str (foo)
      ==> "foo"
xstr (foo)
      ==> xstr (4)
      ==> str (4)
      ==> "4"

所以你可以做这样的事情:

#define xstr(s) str(s)
#define str(s) #s
#define num 7
#pragma comment(lib, "string" xstr(num))

如果它在实际代码中,正常的字符串合并规则应该会很好,但我不确定字符串是否会自动合并到编译指示中。这可能取决于实现。

于 2012-09-19T18:08:45.623 回答