令我惊讶的是,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如何实现函数参数继承?
谢谢!
@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; }
结果: