Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Doxygen--用于多个函数的单个注释块_C++_Comments_Doxygen - Fatal编程技术网

C++ Doxygen--用于多个函数的单个注释块

C++ Doxygen--用于多个函数的单个注释块,c++,comments,doxygen,C++,Comments,Doxygen,您是否能够使用单个注释块对doxygen中的多个函数进行注释?下面是一个不起作用的简单示例。我可以做类似的事情来得到我想要的吗 file.cpp #include file.h /// @name FunsGroupedInDoxygen ///@{ /** * @brief Documentation for 2 functions * @param aParam A Parameter * @retval 0 will always be returned */ int fun

您是否能够使用单个注释块对doxygen中的多个函数进行注释?下面是一个不起作用的简单示例。我可以做类似的事情来得到我想要的吗

file.cpp

#include file.h

/// @name FunsGroupedInDoxygen
///@{
/**
 * @brief  Documentation for 2 functions
 * @param  aParam A Parameter
 * @retval 0 will always be returned
 */
int fun1(int aParam) {return 0;}
int fun2(int aParam) {return 0;}
///@}
文件.h

int fun1(int aParam);
int fun2(int aParam);
氧输出:


警告:file.h的Member fun2(int aParam)(函数)没有文档记录。

我不确定是否有一个注释块,但一个简单的方法是使用
@copydoc
(),例如:


在这里查看分组有几种方法可以使用。我认为最适合这种情况的是成员组

可以使用以下两种样式之一定义成员组:

///@{ 
  ...
///@}

这方面的一个例子是:

/** @name FunctionGroup
 * @brief  Documentation for 2 functions
 * @param  aParam A Parameter
 * @retval 0 will always be returned
 */
///@{
//* fun1 specific description */
int fun1(int aParam) {return 0;}
//* fun2 specific description */
int fun2(int aParam) {return 0;}
///@}
这允许您定义一个组,您可以为该组提供通用描述,并且仍然可以在创建的doxygen文件中删除特定于每个函数的注释

我没有在我所在的计算机上安装doxygen,也无法直接测试此代码,但是如果遵循文档中“成员组”部分的group2示例,则该示例的编译输出为,希望是您想要的输出

编辑: 测试后,上一个选项确实对我有效,但仅当我将所需的提取模式设置为“所有实体”(在doxyfile中,EXTRACT_All=YES)时才有效。最好只使用实际记录的实体,因此我花了一些时间尝试与上述文档不同的方法

文件.h:

/**
 * \defgroup FunctionGroup A Group of Functions
 * @brief Documentation for 2 functions
 * @param aParam A Parameter
 * @retval 0 will always be returned
 * @{
 */ 
int fun1(int aParam);
int fun2(int aParam);
 /** @} */
file.cpp:

#include file.h

/** @ingroup FunctionGroup
 * @brief fun1 specific description
 */
 int fun1(int aParam){
    return 0;
 }
/** @ingroup FunctionGroup
 * @brief fun2 specific description
 */
 int fun2(int aParam){
    return 0;
 }
以下是我在这两个文件上运行Doxygen时得到的输出图像:


我在windows计算机上使用了doxywizard,由此生成的doxyfile是。

我很难找到一个原因来解释为什么不单独执行这些操作。为什么要对两个函数使用相同的文档?如果它们没有足够的差异来保证不同的描述,那么为什么它们是两个独立的函数呢?@Tuffwer Fair。让我给你举个具体的例子。在我使用的一些库中,有一些函数控制特定的硬件引脚。这些功能只能在目标输出上有所不同。在模拟这些函数时,我希望将它们组合在一起,并且它们的文档实际上是相同的。也许你会希望每一行都有不同的文档。如果输出需要不同,那是有道理的,因为它是用硬件工作的,而不是完全用软件工作的。在这种情况下,我会尝试更多的混合,并尝试用一个块来描述函数族,但作为最终用户,我仍然认为我至少需要一行代码来解释特定函数的特定输出目标是什么。感谢您解释您的情况,我从未处理过在硬件级别交互的代码(对于类似的问题,这是一个很好的使用案例),也许是时候学习树莓pi了。@Tuffwer我很喜欢您的方法。当我尝试这么做的时候,基本上没有成功。Doxygen告诉我:temp/file.h:18:警告:file.h的Member fun1(int aParam)(函数)没有文档记录。temp/file.h:19:警告:文件file.h的成员fun2(int aParam)(函数)未被记录。据我所知,所有的例子都涉及类内的成员函数,不是独立的功能。当我可以在安装了Doxygen的情况下访问我的机器时,我会在家里进行检查,看看是否可以解决问题。@Napthali好的,我添加了另一种方法,似乎可以使用基本上应该是默认的Doxygen配置。让我知道这是否适用于您我还将
distribution\u GROUP\u DOC
设置为
YES
/**
 * \defgroup FunctionGroup A Group of Functions
 * @brief Documentation for 2 functions
 * @param aParam A Parameter
 * @retval 0 will always be returned
 * @{
 */ 
int fun1(int aParam);
int fun2(int aParam);
 /** @} */
#include file.h

/** @ingroup FunctionGroup
 * @brief fun1 specific description
 */
 int fun1(int aParam){
    return 0;
 }
/** @ingroup FunctionGroup
 * @brief fun2 specific description
 */
 int fun2(int aParam){
    return 0;
 }