1

在我的应用程序中,我想将版本 ID 添加为宏并在应用程序的多个部分中使用它。正如这个问题中所解释的,我可以很容易地用这个生成一个字符串:

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

我现在的问题是,在某些部分,我需要将标题作为 unicode 字符串。

我尝试了以下方法:

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

但它给出了错误“不能关注广泛的'Stackoverflow示例应用程序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 回答