【问题标题】:Doxygen: How can I document macros that are not #defined?Doxygen:如何记录未定义的宏?
【发布时间】:2016-05-07 13:12:33
【问题描述】:

我正在尝试使用 Doxygen 来记录一些选项控制宏符号的功能,例如:

 //! \def BOOST_SOMEFEATURE
 /*! \brief Option macro that is not normally defined
  *  but can optionally be defined by consumers to activate the option.
 */

但这不会被索引,并且注释将被忽略,因为宏没有定义。

只有当有#definelike 时,才会在文档中生成 Doxygen 宏符号条目

#define BOOST_SOMEFEATURE

在头文件和其他文件中。

我可以强制记录宏符号,而不是像

这样讨厌的软糖吗
  #undef BOOST_SOMEFEATURE

或者可能包含一个虚拟 .cpp 文件,其中包含控制选项的所有宏符号的 #defines?

  #define BOOST_SOMEFEATURE
  #define BOOST_SOMEOTHERFEATURE
  ...

【问题讨论】:

  • 至少当我很好地理解你的问题时,应该可以围绕这些定义和文档制作一个块,例如#ifdef DOXYGEN_GENERATION 并在 Doxyfile 中定义 DOXYGEN_GENERATION。
  • 谢谢。听起来很合理,但我还不明白如何在 doxyfile 中#define BOOST_SOMEFEATURE 以便它被 Doxygen 索引。请您再解释一下吗?

标签: c++ macros doxygen undefined-symbol


【解决方案1】:

执行以下操作:

  1. 将以下行添加到您的 Doxyfile:

    PREDEFINED = _DOXYGEN_
    
  2. 将您的 #define 宏放入 #ifdef _DOXYGEN_ 部分:

    #ifdef _DOXYGEN_
        /*!
         * Documentation describing the BOOST_SOMEFEATURE macro.
         */
        #define BOOST_SOMEFEATURE
    
        /*!
         * Documentation describing the BOOST_SOMEOTHERFEATURE macro.
         */
        #define BOOST_SOMEOTHERFEATURE
    #endif
    

使用此方法,您的宏在正常构建期间不会被预处理器看到,但会被 Doxygen 看到。

您可以将此部分放在您喜欢的代码中的任何位置:在 .cpp 文件、.h 文件中,或者根据需要创建一个虚拟 .cpp 文件。

另请参阅

【讨论】:

  • 谢谢你 - 在头文件中对我很好,让我可以将文档与代码一起保存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2011-11-21
  • 2017-01-12
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多