ROOT中的ClassImp预处理器宏 - 它真的需要吗?

时间:2016-07-18 13:58:06

标签: root-framework

我是否真的必须使用ClassImp宏来帮助ROOT中的自动字典和流媒体生成?一些在线教程和示例提到了它,但我注意到只需将ClassDef(MyClass, <ver>)宏添加到MyClass.h并使用rootcint/rootcling处理它已经生成了大部分此类代码。

我确实查看了定义这些宏的Rtypes.h但是要跟随预处理器宏相互调用并不容易,因此,如果专家可以确认ClassImp的作用,那将会很好。我对最近版本的ROOT&gt; = 5.34

特别感兴趣

2 个答案:

答案 0 :(得分:1)

以下是我在roottalk邮件列表上得到的答案,确认ClassImp的使用基本上已过时。

  

ClassImp用于在TClass中注册源文件的名称   为了上课。这特别是由THtml使用(现在已经有了   被弃用,赞成Doxygen)。所以,除非您编写代码/框架   需要知道源文件的名称,不再需要   有ClassImp。

     

ClassDef是继承自TObject(或任何来自TObject)的类所必需的   具有ClassDef的类。在其他情况下,它提供   加速器使I / O稍快(因此是   在这种情况下技术上不是强制性的)。它还分配了一个版本   模式布局的编号,简化了编写模式演变   规则(另一方面,还有另一种选择   架构布局的版本号。)

答案 1 :(得分:0)

你到底想要做什么? ClassImpClassDef宏将成员添加到提供Run-Time Type Information的类,并允许将类写入根文件。如果您对此不感兴趣,请不要为这些宏烦恼。

我从不使用它们。

相关问题