Why the option to use attributes in new ATL projects was removed from Visual Studio 2008?
-
09-06-2019 - |
Question
This is the text from MSDN comment: "According to the book ATL Internals (2ed) the use of attributes is deprecated and should not be used in new ATL projects."
But WHY?!!
Solution
In ATL these attributes were a compiler trick. They were not a core part of the platform like attributes in C#. They were also more confusing to debug than macros's and the method of dumping generated attribute code was a hassle.
I suspect another issue is likely to have been C++ compiler compatibility and standards-adherence. Attributes didn't make for more beautiful C++ code, and perhaps this syntax may be used in a future version of a real C++ standard.
OTHER TIPS
Appendix D of the book goes into this.
Attributed ATL requires compiler extensions, and the problems encountered include
- debugging either code generated by the attribute or the interaction between the attribute and your code
- no control over the code generated
- bugs, especially around connection points