【问题标题】:Links in Doxygen `@code` blocks are sometimes missingDoxygen `@code` 块中的链接有时会丢失
【发布时间】:2012-10-24 11:39:51
【问题描述】:

我注意到,当默认构造函数不带参数时,Doxygen 可以链接来自实例的成员函数调用,但在构造函数带参数时无法链接它们。

  • 这是为什么呢?
  • 是否有在@code/@endcode 块中手动添加链接的解决方法?

在下面的例子中:

  • t.foo() - foo() 已链接
  • u.foo() - foo() 未链接

.

/** @file doxy.cpp */

/** struct T */
struct T {
  /** foo */
  void foo() { }
};

/** struct U */
struct U {
  int a; /**< int a */

  /** U */
  U(int a_) : a(a_) { }

  /** foo */
  void foo() { }
};

/**
 * main
 *
 * @code
 * T t;
 * t.foo();  // foo is linked
 *
 * U u(42);
 * u.foo();  // foo is not linked
 * @endcode
 */
int main()
{
  return 0;
}

【问题讨论】:

    标签: c++ doxygen


    【解决方案1】:

    我认为这是 Doxygen 中已知问题的症状。来自http://www.doxygen.nl/manual/trouble.html

    在某些情况下,多余的大括号会混淆 doxygen。例如:

    void f (int); 
    

    被正确解析为函数声明,但是

    const int (a);
    

    也被视为一个名为 int 的函数声明, 因为只分析语法,而不分析语义。如果 可以检测到多余的大括号,如

    int *(a[20]); 
    

    然后 doxygen 将删除大括号并正确解析结果。

    所以在这种情况下,我相信:

    U u(42);
    

    被解释为函数而不是变量声明。

    不幸的是,我不知道在代码块中显式添加链接的任何选项。我发现的唯一解决方法是重组代码,使声明看起来不像 Doxygen 的函数。例如,将变量初始化更改为:

    U u = U(42);
    

    允许 Doxygen 将 u 识别为变量而不是函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-31
      • 2010-10-31
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多