Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Visual studio 2008 Visual Studio 2008预处理器wierdness_Visual Studio 2008_Preprocessor - Fatal编程技术网

Visual studio 2008 Visual Studio 2008预处理器wierdness

Visual studio 2008 Visual Studio 2008预处理器wierdness,visual-studio-2008,preprocessor,Visual Studio 2008,Preprocessor,我们已经为我们的构建建立了一个简单的版本控制系统,以确保构建文件始终指示它们是Beta调试版本还是Beta发布版本 我将文件版本信息移动到myapp.rc2并创建了version.h // version.h // _DEBUG is defined by VS #define _BETA #ifdef _BETA #define FILE_DESC1 _T("BETA ") #else #define FILE_DESC1 /

我们已经为我们的构建建立了一个简单的版本控制系统,以确保构建文件始终指示它们是Beta调试版本还是Beta发布版本

我将文件版本信息移动到myapp.rc2并创建了version.h

    // version.h 
    // _DEBUG is defined by VS

    #define _BETA

    #ifdef _BETA
    #define FILE_DESC1   _T("BETA ")
    #else
    #define FILE_DESC1  // blank on purpose 
    #endif

    #ifdef _DEBUG
    #define FILE_DESC2   _T("Debug Version ")
    #else
    #define FILE_DESC2   _T("Release Version ") // this is greyed out in the ide when building
    #endif

    #define FILE_DESC   FILE_DESC1 FILE_DESC2


// myapp.rc2
include "version.h"

#ifndef _T
#define _T(x)   x
#endif

VS_VERSION_INFO VERSIONINFO
 FILEVERSION PROD_VER_MJR,PROD_VER_MIN,PROD_VER_UPD,JOBUILDER_BUILD
 PRODUCTVERSION PROD_VER_MJR,PROD_VER_MIN
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", COMPANY_NAME
            VALUE "FileDescription", FILE_DESC
            VALUE "FileVersion", JOBBUI_VERSION
            VALUE "InternalName", "MyApp.exe" 
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "OriginalFilename", "MyApp.exe"
            VALUE "ProductName", PRODUCT_NAME
            VALUE "ProductVersion", PRODUCT_VERSION
            VALUE "Comments",  COMMENTS
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END
但是,当exe构建在调试输出目录中时,文件描述总是错误地显示“BETA发行版本”而不是“BETA调试版本”,但IDE指示将使用“define file DESC2”(“调试版本”)。为什么会这样?我在另一个项目中使用了这些文件,它们工作正常

谢谢……

对这样的预处理器问题进行“调试”的最佳方法是在您认为宏实际得到“定义”的位置粘贴“错误”指令

一旦你知道了预处理器的实际路径,你可以试着找出它为什么会这样做


编辑:此外,资源编译器运行的预处理器可能与编译器运行的预处理器在预定义宏方面有所不同

修复:在调试版本中,我添加了_debug到:-


项目属性>资源>预处理器定义。现在它可以正常工作了。

您编辑的:是正确的。我按照您的建议添加了#error指令,然后得到了这个错误“致命错误RC1116:RC在预处理器错误后终止”,看起来资源编译器在#error(可能不知道/不支持)和我的原始#定义方面有问题。我想知道有什么办法可以解决这个问题吗?sam代码“似乎”正在处理另一个VS2008项目。