Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我不能在.rc文件中使用预定义常量?_C++_Visual Studio 2012 - Fatal编程技术网

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

C++ 为什么我不能在.rc文件中使用预定义常量?,c++,visual-studio-2012,C++,Visual Studio 2012,我想确保不能混淆我的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

我想确保不能混淆我的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
在包含
我的产品名称
的行中,我得到以下编译器错误:

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>  
这让我非常生气,因为那是


我做错什么了吗?我想是的,那是什么呢?

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


当然,对于资源文件,我不是专家。

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

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

嗯,不,不是。您缺少了一个关键部分:《代码》\define VER\u FILEVERSION\u STR“3.10.349.0\0”
-是否看到终止字符串的空字符?顺便说一句,您的所有字符串值中都缺少它。字符串值是由visual studio 2012定义和生成的。我将把它加到常数中,现在我看到了更重要的问题。在
define
@KenWhite中没有“=”,我不知道你为什么要发布粗体文本。我已经说过我看到了区别,没有必要对我大喊大叫——这就是粗体文本听起来的样子。我还特别指出,该错误是为常量的第一次出现而抛出的-这可能是由于=字符和缺少终止
\0
而发生的;我没有对你大喊大叫,如果是那样的话,我向你道歉。你强调了这一点,我也强调了这一点。再一次,如果我冒犯了你,我向你道歉。这真的有帮助吗?