正文

C2059和C2733同时出现的错误解决2010-07-27 13:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/miaowei/51535.html

分享到:

症状 

 在 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。 在 文件 菜单上指向 打开,然后单击 项目/解决方案。 找到该项目或您要打...

要变通解决此问题,请按照下列步骤操作:
  1. 启动 Visual Studio 2005。
  2. 文件 菜单上指向 打开,然后单击 项目/解决方案
  3. 找到该项目或您要打开,该解决方案,然后单击 打开
  4. 复制并粘贴以下代码在代码窗口中。下面代码应该黏贴在 # include <stdlib.h> 语句 前。
    #pragma push_macro("_dupenv_s")
    #pragma push_macro("_wdupenv_s")
    #undef _dupenv_s
    #undef _wdupenv_s
  5. 复制并粘贴以下代码在代码窗口中。该代码应粘贴在 # include <stdlib.h> 语句  之后。
    #pragma pop_macro("_dupenv_s")
    #pragma pop_macro("_wdupenv_s")
  6. 生成 菜单上单击 生成解决方案
该代码应类似于下面的代码示例
#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翻译结果。

阅读(3427) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册