记录并参考一组定义

时间:2013-11-20 13:30:30

标签: c doxygen

特别是在驱动驱动程序时,我经常有一组定义,通常赋予寄存器中的位含义

例如

#define STATUS_READY (0x01)
#define STATUS_STALL (0x02)
#define STATUS_FAIL  (0x04)

...

StatusRegister = getStatus();
if( (StatusRegister & STATUS_READY) == STATUS_READY)
{
    DoStuffWhenReady();
}

a.s.o。

Doxygen中是否有办法将这些定义分组​​到一个命名组中,因此它们将作为一个组显示在定义列表中,我可以参考它们?

eaxmple:

/**
 * Return the status of register foo
 *
 * @return status bit for register foo see @ref FooStatusBits for bit defines
 */
int getStatus(void);

我试过

///@name FooStatusBits
///@{
    #define STATUS_READY (0x00)
    #define STATUS_STALL (0x01)
    #define STATUS_FAIL  (0x02)
///@}

无法正常工作(也尝试使用{} in {})

我试过

///@defgroup FooStatusBits Regiser foo status bits
///@{
    #define STATUS_READY (0x00)
    #define STATUS_STALL (0x01)
    #define STATUS_FAIL  (0x02)
///@}

部分工作,但是将这些定义的文档放在一个单独的html文件中,它们出现在模块列表中,都是不需要的。

1 个答案:

答案 0 :(得分:0)

参考documentation,它说:

  

\ref <name>:创建对命名部分,子部分,页面或锚点的引用。

它没有提到组,所以我认为你不能用ref引用命名组。如果

解决方法可能是使用关键字anchor创建锚点。您必须将此锚点放在@name块中,然后您可以自由地引用它:

/**@name FooStatusBits
* @anchor FooStatusBits
*/
///@{
    #define STATUS_READY (0x00)
    #define STATUS_STALL (0x01)
    #define STATUS_FAIL  (0x02)
///@}

这种解决方法的一个暗示是要记住,组的名称是字符串,而不是单个单词,因此doxygen不会将其作为链接符号。