为什么我不能在 .rc 文件中使用预定义常量?

Why can I not use predefined constants in .rc file?

我想确保不能混淆我的 DLL 文件的 64 位和 32 位版本。这就是为什么我在项目属性中定义了以下预处理器常量:

在我的 .rc 文件中,我有这些行:

#ifdef x64 
  #define MY_PRODUCT_NAME = "My file 64bit"
#else
  #define MY_PRODUCT_NAME = "My file 32bit"
#endif

我想在下面的资源块中使用这些常量:

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000904b0"
        BEGIN
            VALUE "CompanyName", "SOMENAME"
            VALUE "FileDescription", "WHAT THIS FILE IS"
            VALUE "FileVersion", "1.0.0.1"
            VALUE "InternalName", "file.dll"
            VALUE "LegalCopyright", "Don't sell it pls"
            VALUE "ProductName", MY_PRODUCT_NAME
        END

在包含 MY_PRODUCT_NAME 的行中,我收到此编译器错误:

1>  
1>StopThat.rc(58): error RC2133: unexpected value in value data
1>  
1>  
1>StopThat.rc(58): error RC2132: expected VALUE, BLOCK, or END keyword
1>  

这让我很生气,因为那是exactly what microsoft does in their documentation

我是不是做错了什么?我想我是,那是什么?

假设您发布的代码与您尝试编译的代码完全相同,我会说这可能是您缺少完整范围的两个 END 语句,而且我从未在 # 中看到等号定义语句。

不过可以肯定的是,我不是资源文件方面的专家。

这是因为您在宏定义中使用了赋值运算符,请从您的定义中删除“=”:

#ifdef x64 
  #define MY_PRODUCT_NAME "My file 64bit"
#else
  #define MY_PRODUCT_NAME "My file 32bit"
#endif