gpt4 book ai didi

c++ - 如何将连接的定义转换为 RC 文件中的字符串?

转载 作者:行者123 更新时间:2023-11-28 06:37:17 25 4
gpt4 key购买 nike

我有一个 RC 文件,里面有这些定义:

#define V_MAJOR 0
#define V_MINOR 0
#define V_PATCH 0
#define V_BUILD 2
#define DOT .

#define V_STRING V_MAJOR##DOT##V_MINOR##DOT##V_PATCH##DOT##V_BUILD

如何将 V_STRING 转换为文字字符串?

我尝试了以下代码(这是我在互联网上找到的并且应该有效)

#define STRINGIZE_(x) #x
#define STRINGIZE(x) STRINGIZE_(x)

然后我在 V_STRING 上调用了 STRINGIZE,但不是将值转换为字符串,而是将标识符转换为字符串。 (也就是在产品版本的资源管理器的属性选项卡中显示“V_MAJORDOTV_MINORDOTV_PATCHDOTV_BUILD”。)

我基本上希望 V_STRING 使用 V_MAJOR、V_MINOR、V_PATCH 和 V_BUILD 返回“0.0.0.2”。我该怎么做?

最佳答案

首先,重新定义您的版本号,如下所示。

#define V_MAJOR "0"
#define V_MINOR "0"
#define V_PATCH "0"
#define V_BUILD "2"
#define DOT "."

请注意版本号在双引号内。

然后重新定义 VS_STRING,如下所示。

    #define V_STRING V_MAJOR DOT V_MINOR DOT V_PATCH DOT V_BUILD

请注意,没有使用标记粘贴运算符。

现在您可以在 RC 文件中使用 VS_STRING 宏,如下所示。

// Other stuffs
VALUE "FileVersion", V_STRING
// Other stuffs

此外,您还可以在代码中使用 VS_STRING 宏,如下所示。

    char* ptszVersion = V_STRING;
printf( "Version number is %s", ptszVersion );

见下面的输出。

版本号是0.0.0.2

关于c++ - 如何将连接的定义转换为 RC 文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com