Doxygen 继承另一个函数中的一些参数

问题描述 投票:0回答:1

令我惊讶的是,Doxygen 似乎无法从另一个已记录的函数继承函数参数。假设我已经记录了

f
:

/**
 * Add them
 * 
 * Add them
 * 
 * @param a  An integer.
 * 
 * @param b  An integer.
 * 
 * @param c  An integer.
 * 
 * @return  Return the sum.
 *
 */
int f(int a, int b, int c) { return a + b + c; }

现在我想用

a
中的相同
b
f
来记录另一个函数。使用
roxygen2
记录通过
Rcpp
模块公开的 C++ 函数,我可以编写以下内容:

/**
 * Do something
 * 
 * Do something
 * 
 * @inheritParams f
 * 
 * @param d  A double
 * 
 * @return  Return the result.
 * 
 */
double g(int a, int b, double d} { return (a + b) * d; }

上面的代码将从

a
继承
b
f
的描述。

我有很多函数,它们的参数或多或少是相同的。复制和粘贴参数描述是相当令人畏惧的。 2024年Doxygen如何实现函数参数继承?

谢谢!

c++ doxygen
1个回答
0
投票

@copydoc
有一个缺点,它不仅会复制所有参数,导致参数
c
出现警告,还会复制简要和详细的描述等(请参阅下面的功能
g
) 目前,Doxygen 缺少
@copyparam
命令,但使用
\snippet{doc}
命令有一些可能性,如下例所示(结果为函数
g1
)。

  • 我们需要片段命令的占位符来指示要复制的部分(函数
    [f_p]
    中的
    f
    部分。我们在这里还使用了
    \noop
    命令,因此
    [f_p]
    不会出现在
    f
  • 的文档
  • 占位符之间的部分不应具有
    *
    ,否则它们将作为列表标记出现在
    g1
    的结果输出中。
  • 在函数
    g1
    中,我们需要参考:
    @snippet{doc} aa.h f_p
    ,因此该片段作为文档包含在内(我的文件是
    aa.h
    ,因此是命令中的名称)。

这一切都已使用当前 doxygen 版本 1.10.0 进行了测试(由于 doxygen 1.10.0 中的问题,构造

@snippet{doc} this f_p
是不可能的,因此
@snippet{doc} aa.h f_p
中的显式文件名)

/// \file


/**
 * Add them
 *
 * Add them
 * \noop [f_p]
   @param a  An integer.

   @param b  An integer.
   \noop [f_p]
 *
 * @param c  An integer.
 *
 * @return  Return the sum.
 *
 */
int f(int a, int b, int c) { return a + b + c; }

/**
 * Do something
 *
 * Do something
 *
 * @copydoc f
 *
 * @param d  A double
 *
 * @return  Return the result.
 *
 */
double g(int a, int b, double d) { return (a + b) * d; }

/**
 * Do something
 *
 * Do something
 *
 * @snippet{doc} aa.h f_p
 * @param d  A double
 *
 * @return  Return the result.
 *
 */
double g1(int a, int b, double d) { return (a + b) * d; }

结果:

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.