3

这是来自 MSDN 评论的文本:“根据 ATL Internals (2ed) 一书,不推荐使用属性,不应在新的 ATL 项目中使用。”

但为什么?!!

4

2 回答 2

4

在 ATL 中,这些属性是一个编译器技巧。它们不像 C# 中的属性那样是平台的核心部分。它们也比宏更容易调试,并且转储生成的属性代码的方法很麻烦。

我怀疑另一个问题可能是 C++ 编译器兼容性和标准遵守。属性并没有使 C++ 代码更漂亮,也许这种语法可能会在未来版本的真正 C++ 标准中使用。

于 2008-09-09T00:49:19.900 回答
1

本书的附录 D 对此进行了说明。

属性化 ATL 需要编译器扩展,遇到的问题包括

  • 调试属性生成的代码或属性与代码之间的交互
  • 无法控制生成的代码
  • 错误,尤其是在连接点周围
于 2009-08-10T10:59:01.553 回答