我需要一个使用整数的宏值的字符串。但它在任何函数之外,所以我不想创建一个变量。我在#pragma 评论中使用它。
所以是这样的:
#define num 7
#pragma comment(lib, "string" + num)
这将结合字符串和 num 使其成为 (#pragma comment(lib, "string7")
你想要做的叫做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
我的意图并不完全清楚,这听起来像是一些预处理器功能: 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))
如果它在实际代码中,正常的字符串合并规则应该会很好,但我不确定字符串是否会自动合并到编译指示中。这可能取决于实现。