используя атрибуты C ++ 11 - PullRequest
17 голосов
/ 26 марта 2012

Не могли бы вы объяснить, как получить информацию из атрибутов в C ++?Например, я хочу написать C ++ для привязки к Python.Для этого мне нужно аннотировать все методы в классе с определенной информацией о привязке.Теперь мне нужно сгенерировать некоторый код по атрибутам.Или другой пример, сопоставьте класс с сущностью БД.Или атрибуты C ++ 11 не такие, как в аннотациях Java или C #?

Ответы [ 2 ]

19 голосов
/ 26 марта 2012

Атрибуты ( новая функция C ++ 11 ) - это просто стандартизированный синтаксис для расширений компилятора.Чтобы делать то, что вы хотите, вам нужен компилятор с соответствующими расширениями.Пока что я не думаю, что какой-либо компилятор даже реализует синтаксис атрибутов, тем более каких-либо специфических атрибутов для привязок Python.

Поскольку они предназначены для расширений компилятора, не существует стандартного способа создания ваших собственных атрибутов, таких какВы можете с аннотациями Java или атрибутами C #.Конечно, компилятор может предоставить эту возможность как расширение ...;)

3 голосов
/ 28 июля 2014

Обновление с более свежей информацией:

GCC теперь (с версии 4.8) реализует атрибуты C ++ 11 в качестве альтернативного синтаксиса для __attribute__((XXX)).

Вы также можете использовать механизм плагинов GCC для определения новых атрибутов - см. https://gcc.gnu.org/onlinedocs/gccint/Plugins.html.

Вы также можете сделать это в python с помощью gcc-python-plugin - см. https://gcc -python-plugin.readthedocs.org / en / latest / attribute.html .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...