Почему опция использования атрибутов в новых проектах ATL была удалена из Visual Studio 2008?
-
09-06-2019 - |
Вопрос
Это текст из комментария MSDN:"Согласно книге ATL Internals (2ed), использование атрибутов устарело и не должно использоваться в новых проектах ATL".
Но ПОЧЕМУ?!!
Решение
В ATL эти атрибуты были уловкой компилятора.Они не были основной частью платформы, как атрибуты в C #.Они также были более запутанными для отладки, чем макросы, и метод сброса сгенерированного кода атрибута был сложным.
Я подозреваю, что другой проблемой, вероятно, была совместимость компилятора C ++ и соблюдение стандартов.Атрибуты не сделали код C ++ более красивым, и, возможно, этот синтаксис может быть использован в будущей версии реального стандарта C ++.
Другие советы
Об этом говорится в приложении D к книге.
Приписываемый ATL требует расширений компилятора, и встречающиеся проблемы включают в себя
- отладка либо кода, сгенерированного атрибутом, либо взаимодействия между атрибутом и вашим кодом
- нет контроля над сгенерированным кодом
- ошибки, особенно вокруг точек подключения