0

整数のマクロ値を使用する文字列が必要です。しかし、それは関数の外にあるので、変数を作成したくありません。#pragmaコメントで使用しています。

だからこのようなもの:

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

文字列と数値を組み合わせて作成します(#pragma comment(lib、 "string7")

4

2 に答える 2

4

あなたがしたいことは文字列化と呼ばれています

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

#define NUM 7

char *p = stringify(NUM);

これは、Linuxカーネルヘルパーの__stringify マクロに触発されています。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 に答える