为什么 Visual Studio 2008 中删除了在新 ATL 项目中使用属性的选项?
-
09-06-2019 - |
题
这是MSDN评论中的文字:“根据 ATL Internals (2ed) 一书,属性的使用已被弃用,并且不应在新的 ATL 项目中使用。”
但为什么?!!
解决方案
在 ATL 中,这些属性是编译器的技巧。它们不像 C# 中的属性那样是平台的核心部分。它们的调试也比宏更令人困惑,并且转储生成的属性代码的方法很麻烦。
我怀疑另一个问题可能是 C++ 编译器兼容性和标准遵守情况。属性并没有带来更漂亮的 C++ 代码,也许这种语法可能会在真正的 C++ 标准的未来版本中使用。
其他提示
本书的附录D对此进行了介绍。
Attributed ATL需要编译器扩展,遇到的问题包括
- 调试属性生成的代码或属性与代码之间的交互
- 无法控制生成的代码
- 错误,特别是在连接点周围
不隶属于 StackOverflow