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

 当使用 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
在线技术支持工程师
微软全球技术支持中心

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值