Подтвердить что ты не робот

Используя атрибуты С++ 11

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Вы также можете сделать это в python, используя gcc-python-plugin - см. https://gcc-python-plugin.readthedocs.org/en/latest/attributes.html.