我正在更新一些旧的c ++代码,并发现许多类被定义为:
public __gc class NameOfClass{ }
我找到了一些关于__gc here的信息,但似乎只提供了VS 2003的信息。我的VS 2005副本附带的MSDN文档表明__gc可能没有被使用了。
我自己就是C#家伙,所以我想确保在更新此代码时不会出错。是否为.NET 2.0及更高版本的c ++类自动收集垃圾?或者以某种方式替换了__gc关键字?
答案 0 :(得分:4)
您正在使用托管扩展来查看C ++,这是使用一些相当创新的语法向cpp添加clr功能的简短尝试失败。我相信从2005年起,c ++ cli得到了完全支持,这是C ++中clr的完整实现。请查看this从m。
迁移建议答案 1 :(得分:1)
它已被某种(可能完全)取代;我相信它仍然支持BC,但VS2005引入了一种新机制,使托管类型更加明确。请参阅:http://msdn.microsoft.com/en-us/library/xey702bw%28v=VS.80%29.aspx
作为参考,旧语法的一个大问题是它添加了标准C ++语法的重载使用,这取决于底层类型,这在代码中非常混乱。新语法可以更好地区分托管句柄和非托管指针。