为什么从Visual Studio 2008中删除了在新的ATL项目中使用属性的选项?
时间:2020-03-05 18:49:32 来源:igfitidea点击:
这是MSDN注释中的文本:"根据《 ATL内部知识》(第2版)一书,不建议使用属性,并且不应在新的ATL项目中使用该属性。"
但为什么?!!
解决方案
回答
在ATL中,这些属性是编译器的把戏。它们不像C#中的属性那样是平台的核心部分。与宏相比,它们更容易调试,并且转储生成的属性代码的方法很麻烦。
我怀疑C ++编译器的兼容性和标准遵循性可能是另一个问题。属性并不能使C ++代码变得更漂亮,也许这种语法可能会在将来的真实C ++标准中使用。
回答
本书的附录D对此进行了介绍。
属性ATL需要编译器扩展,并且遇到的问题包括
- 调试属性生成的代码或者属性与代码之间的交互
- 无法控制生成的代码
- 错误,尤其是在连接点附近