症状 在 Microsoft Visual Studio 2005 中创建一个 c + + 应用程序。 您定义 _CRTDBG_MAP_ALLOC,然后编译的时候会出现 C2059和C2733的错误。 例如对于假定 c + + 应用程序中包含下面的代码 #define _CRTDBG_MAP_ALLOC #include <malloc.h> #include <crtdbg.h> #include <stdlib.h> 在此的示例编译 c + + 应用程序时您会收到以下编译器错误消息: 错误 C2059: 语法错误: 常量 错误 C2733: 第二个重载函数 _dupenv_s_dbg 不允许使用的 C 链接 解决方法 要变通解决此问题,请按照下列步骤操作: 启动 Visual Studio 2005。 在 文件 菜单上指向 打开,然后单击 项目/解决方案。 找到该项目或您要打... 要变通解决此问题,请按照下列步骤操作: 启动 Visual Studio 2005。 在 文件 菜单上指向 打开,然后单击 项目/解决方案。 找到该项目或您要打开,该解决方案,然后单击 打开。 复制并粘贴以下代码在代码窗口中。下面代码应该黏贴在 # include <stdlib.h> 语句 前。 #pragma push_macro("_dupenv_s") #pragma push_macro("_wdupenv_s") #undef _dupenv_s #undef _wdupenv_s 复制并粘贴以下代码在代码窗口中。该代码应粘贴在 # include <stdlib.h> 语句 之后。 #pragma pop_macro("_dupenv_s") #pragma pop_macro("_wdupenv_s") 在 生成 菜单上单击 生成解决方案。 该代码应类似于下面的代码示例 #define _CRTDBG_MAP_ALLOC #include <malloc.h> #include <crtdbg.h> #pragma push_macro("_dupenv_s") #pragma push_macro("_wdupenv_s") #undef _dupenv_s #undef _wdupenv_s #include <stdlib.h> #pragma pop_macro("_dupenv_s") #pragma pop_macro("_wdupenv_s")以上分析是参考MSDN翻译结果。

评论