VS忽略Resources.rc中的符号_Debug(Visual Studio bug?)

时间:2013-05-31 06:17:47

标签: debugging visual-c++ visual-studio-2005 managed

有人能解释我这种非常奇怪的现象吗?

在我的VS2005中定义了托管C ++项目文件(VCPROJ):

<Configuration
    Name="Debug|Win32"
    ....
    PreprocessorDefinitions="WIN32;_DEBUG"
    ....
</Configuration>
<Configuration
    Name="Release|Win32"
    ....
    PreprocessorDefinitions="WIN32;NDEBUG"
    ....
</Configuration>

无论我使用符号_Debug,它都很完美。 例如:

#ifdef _DEBUG
    #include "noexist.h"
#endif

产生错误

C1083: Cannot open include file: 'noexist.h': No such file or directory

编译为Debug时编译时没有错误编译为Release。

行。

现在出现了一件奇怪的事: 在Resources.rc文件中完全忽略符号_DEBUG。 虽然Visual Studio本身插入了这些行:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
etc...

在Resources.rc中不存在标志_DEBUG(以及NDEBUG)。

如果我插入相同的行

#ifdef _DEBUG
    #include "noexist.h"
#endif

进入Resources.rc它既不会产生编译为Debug也不会产生Release!

的错误

同样适用于

#ifdef NDEBUG
    #include "noexist.h"
#endif

编译时没有错误作为Release和Debug!

怎么可能? 如何将全局编译器符号存在于一个文件中但不存在于另一个文件中?

这是Visual Studio的错误吗?

(在纯C ++项目中,这个工作正常,这个问题只出现在我的Managed C ++项目中)

有解决方法吗?

0 个答案:

没有答案