c – 如何让Doxygen忽略继承关系?

我在绘制协作图时试图让Doxygen忽略继承关系.

假设我的类定义如下所示:

class Derived : public Base
{
  int x;
  int y;
  int z;
}

现在,当我运行Doxygen时,我不希望在生成的协作图中看到Base类.

乍一看,似乎最干净的方法是在我的Doxyfile中使用EXCLUDE_SYMBOLS指令.特别:

EXCLUDE_SYMBOLS = Base

但是,我发现这不起作用:Base类仍然显示在Derived的协作图中.我已经在Doxygen 1.8.6和1.8.11以及基本通配符的不同排列(Base *,* as *等)上尝试了这一点,行为相同. Base类始终显示在我的协作图中.

公平地说,我找到了2个解决方法,但它们都涉及将条件语句放入我的代码中.为了完整起见,我将在这里包括

第一种解决方法

class Derived : 
#ifndef DOXYGEN_SHOULD_SKIP_THIS
    public Base
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
{
  ...
}

然后确保在Doxyfile中设置以下两个指令:

PredefineD = DOXYGEN_SHOULD_SKIP_THIS
ENABLE_PREPROCESSING = YES

第二种解决方法

class Derived : 
/// @cond DOXYGEN_IGnorE
        public Base
/// @endcond
{
  ...
}

需要明确的是,这些变通办法确实使Doxygen忽略了继承关系,但我不希望不必要地污染我的代码库,特别是如果有更好/更清洁的方法来实现我的目标.

我的问题是 – 为什么EXCLUDE_SYMBOLS在绘制协作图时不会使Doxygen忽略我的Base类?

解决方法

如果我没有弄错的话,EXCLUDE_SYMBOLS会阻止Doxygen为排除的符号生成文档,但它不会隐藏它们.这意味着Doxygen不会为您的Base类生成文档,但它仍会将其作为Derived的基类提及,就像Derived继承自外部库提供的类一样,库提供的类的名称也是如此出现在协作图中.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...