您的位置:首页 > 其它

有关 #pragma push_macro("new") 的用法

2009-11-25 10:47 232 查看
当使用 C++ 托管扩展时,如果尝试在 MFC
应用程序内创建托管类型的实例,则编译器还将生成 C3828。为了跟踪内存的使用情况,在 MFC 调试版本中使用时 MFC 重定义 new
运算符。由于此重定义的缘故,会在 MFC 应用程序中创建托管类的实例,从而导致错误。在将现有 MFC
代码移植到公共语言运行库时通常会发生这种情况。对于发布版本不会发生此错误,这是因为 MFC 不重定义 new 运算符。

若要避免此错误,请在创建托管类型的实例前,使用 #undef 和 push_macro 指令暂时取消定义 new 运算符。在最后一行托管代码的后面,使用 pop_macro 还原先前的 new 运算符定义。

#pragma push_macro("new")

#undef new

String* s;

s = new String("Hello world!");

#pragma pop_macro("new")

详细信息清参考MSDN文档:http://msdn2.microsoft.com/zh-cn/library/b3z6z0ay(VS.80).aspx

希望能够对您有所帮助。

Jasson Wang

在线技术支持工程师

微软全球技术支持中心
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: