有没有办法在不指定变量的情况下将字符串连接到数字?

时间:2012-09-19 17:51:39

标签: c++ macros

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

这样的事情:

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

将字符串和数字组合起来(#pragma comment(lib,“string7”)

2 个答案:

答案 0 :(得分:4)

您要做的是 stringification

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

#define NUM 7

char *p = stringify(NUM);

这受到Linux内核帮助程序__stringifyinclude/linux/stringify.h宏的启发。

答案 1 :(得分: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))

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