我需要一个使用宏值的字符串,这是一个整数。但它不在任何函数之内,因此我不想创建变量。我在#pragma评论中使用它。
这样的事情:
#define num 7
#pragma comment(lib, "string" + num)
将字符串和数字组合起来(#pragma comment(lib,“string7”)
答案 0 :(得分:4)
您要做的是 stringification :
#define stringify_1(x...) #x
#define stringify(x...) stringify_1(x)
#define NUM 7
char *p = stringify(NUM);
这受到Linux内核帮助程序__stringify
中include/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中。这可能取决于实现。