症状
在 Microsoft Visual Studio 2005 中创建一个 c + + 应用程序。 您定义 _CRTDBG_MAP_ALLOC,然后编译的时候会出现 C2059和C2733的错误。
例如对于假定 c + + 应用程序中包含下面的代码
#define _CRTDBG_MAP_ALLOC
#include <malloc.h>
#include <crtdbg.h>
#include <stdlib.h>
错误 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翻译结果。
评论