用Doxygen编写C++宏函数文档

eoxn13cs  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(146)

如何使用Doxygen在C++中编写宏函数文档,并在我的非Evil代码文档中引用它?
更具体地说,我在Message.H中定义了一个名为"Message"的常规类,用户可以从中继承来定义自己的消息。在另一个文件("MessageHelpers.H")中,我有一个类似于以下内容的疯狂宏:

//! Users must call this macro to register their messages...
/*! 
   ...lest they be forced to type all sorts of boring and 
   error-prone boiler plate code. 
   blah blah blah... More specific documentation and explanation...
*/
#define REGISTER_MESSAGE_TYPE(MSGTYPE) \
 do_some(MSGTYPE);                     \
 seriously();                          \
 crazy_stuff(MSGTYPE);

在Message的文档中,我希望短语"REGISTER_MESSAGE_TYPE"能自动变成一个链接,指向我的宏文档。

//! A cool message class
/*! 
   Users can inherit from this class to create their own cool messages.
   Just be sure to call REGISTER_MESSAGE_TYPE after your class definition!
*/
class Message
{
  virtual void doSomeStuff();
};

这可能吗?

uubf1zoe

uubf1zoe1#

参见http://www.doxygen.nl/manual/index.html
section "Special Commands"列出\def命令,section "Automatic link generation"描述要链接到宏的内容。
使用\def将宏与声明分开记录。
使用#MACRO(params)自动链接到所述宏定义。

kb5ga3dv

kb5ga3dv2#

Doxygen的文档(Special Commands)提到了\def命令。

示例

/// \def MIN(x,y)
/// Computes the minimum of \a x and \a y.

/// \def MAX(x,y)
/// Like #MIN(x,y) - but Computes the maximum of \a x and \a y.

/*! 
   \brief Computes the absolute value of its argument \a x.
   \param x input value.
   \returns absolute value of \a x.
*/
#define ABS(x) (((x)>0)?(x):-(x))

#define MIN(x,y) ((x)<(y)?(x):(y))
#define MAX(x,y) ((x)<(y)?(y):(x))
    • 注:**
  • 如果doc-comment写在宏的顶部,\brief就足够了。
  • Automatic link generation可用于链接到宏定义,如#MY_MACRO(params)#MIN(x,y)
  • 此外,较新版本支持所有三种注解样式:
  • ///
  • /**
  • /*!

相关问题