使用C++11属性

using C++11 attributes

本文关键字:属性 C++11 使用      更新时间:2023-10-16

你能解释一下如何从C++中的属性中获取信息吗?例如,我想编写C++到python的绑定。为此,我需要用一些特定的绑定信息来注释类中的所有方法。现在我需要通过属性生成一些代码。或者另一个例子,将类映射到数据库实体。或者C++11属性与Java或C#注释中的属性不同?

属性(一个新的C++11特性)只是编译器扩展的标准语法。若要执行您想要的操作,您需要一个具有适当扩展名的编译器。到目前为止,我认为任何编译器都没有实现属性语法,更不用说Python绑定的任何特定属性了。

因为它们是用于编译器扩展的,所以没有标准的方法可以创建自己的属性,就像使用Java注释或C#属性一样。当然,编译器可以提供这种能力作为扩展…;)

包含一些最新信息的更新:

GCC现在(从4.8开始)实现C++11属性作为__attribute__((XXX))的替代语法。

您还可以使用GCC插件机制来定义新的属性-请参阅https://gcc.gnu.org/onlinedocs/gccint/Plugins.html.

您也可以使用gcc-python插件在python中执行此操作-请参阅https://gcc-python-plugin.readthedocs.org/en/latest/attributes.html.