1

私のアプリケーションでは、バージョン ID をマクロとして追加し、それをアプリケーションの複数の部分で使用したいと考えています。この質問で説明したように、これで簡単に文字列を生成できます。

#define APP_VER "1.0"
#define APP_CAPTION "Stackoverflow example app v." ## APP_VER

私の問題は、いくつかの部分で、キャプションをユニコード文字列として持つ必要があるということです。

私は次のことを試しました:

MessageBoxW(0,_T(APP_CAPTION),L"Minimal Counterexample",0);

しかし、「広範囲の「Stackoverflow example app v」に関係することはできません」というエラーが表示されます。狭い「1.0」」

私も試しました

#define WIDE_CAPTION L ## APP_CAPTION

しかし、それだけでは「LAPP_CAPTION」が定義されていません。

実行時に文字列を Unicode に変換できることはわかっていますが、それはやや面倒です。誰かが私の問題に対してマクロレベルの解決策を提供できますか?

4

1 に答える 1

2

あなたはただ欲しい:

#define APP_CAPTION "Stackoverflow example app v." APP_VER

APP_VERはすでに文字列であるため。

文字列の連結は無料で行われます。次に例を示します。

const char *str = "hello " "world"

完全なコンパイル可能な例:

#include <iostream>
#define APP_VER "1.0"
#define APP_CAPTION "Stackoverflow example app v." APP_VER

int main() {
  std::cout << APP_CAPTION << "\n";
  return 0;
}
于 2012-08-14T18:16:56.877 に答える