【问题标题】:Unable to generate documentation for function definition followed by some macro #defines无法为函数定义生成文档,后跟一些宏#defines
【发布时间】:2009-06-10 05:59:55
【问题描述】:

我有一个 .cpp 文件,发现 Doxygen 无法记录包含以下格式的函数:

//!
//! \brief Test
//!        and perform operations on those points.
//!
void CTest::TestTri()
EH_Start("CTest::TestTri")
{
}
EH_Stop

EH_StartEH_Stop 是一种异常处理机制,会导致问题。

我们如何排除这些?

【问题讨论】:

    标签: c++ documentation doxygen


    【解决方案1】:

    尝试使用更明确的 doxygen 格式 - 以下内容准确地告诉 doxygen 您希望记录哪个函数,因此它无需了解您的代码即可确定将文档附加到的内容:

    /// \fn void CTest::TestTri()
    /// \brief Test and perform operations on those points
    EH_STart("CTest::TestTri") {} EH_Stop
    

    【讨论】:

    • 我认为如果 Doxygen 在代码库中的某个位置没有成功解析该函数​​,fn 指令将不起作用。它与“类”指令一样,旨在让您重新定位文档。它不是为了让你为不存在的函数添加任意函数文档。
    【解决方案2】:

    假设 EH_Start 和 EH_Stop 已定义,您可以让 doxygen 在处理代码时扩展这些宏

    EXPAND_AS_DEFINED = EH_Start EH_Stop
    

    我们有许多用于函数和类声明的宏。如果没有EXPAND_AS_DEFINED,doxygen 将无法生成正确的文档

    例如:

    /* C++ Code */
    #define STANDARD_CONSTRUCTORS_HEADER(iCLASS) \
      public:  iCLASS(); \
      public:  virtual ~iCLASS(); \
      private: iCLASS(const iCLASS & iCopy); \
      private: iCLASS& operator=(const iCLASS &);
    
    class Foo {
      STANDARD_CONSTRUCTORS_HEADER(Foo)
    }
    
    /* Doxyfile */
    EXPAND_AS_DEFINED = STANDARD_CONSTRUCTORS_HEADER
    

    没有EXPAND_AS_DEFINED,您将无法在文档中获得 Foo 构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 2023-03-24
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多