0%

Doxygen 注释语法

使用 Doxygen 来生成文档需要遵从的注释语法

开源工程

可以搜索参考用法

注释

  • 注释块
    /**
    * comment text here
    */
    int x = 0;
  • 行尾注释
    int x = 0; ///< comment text here
  • 单行注释
    /// comment text here
    int x = 0;

标记

注释块中可以使用一些特殊的标记,比如 brief 标记,官方称为 Special Commands

例如

  • \struct <name> [<header-file>] [<header-name>]
  • \typedef (typedef declaration)
  • \brief { brief description }

标记可以有两种书写方式 \param 或者 @param,每个命令有一个或多个参数,每个参数都有明确的范围:

  • <> 参数是一个单独单词
  • () 参数一直到命令所在的结束
  • [] 参数是可选的
  • {} 参数一直延伸到本段结束。一个段落的结束以一个空行来标识,或者是一个段落标记

常用标记

  • \brief { brief description } 可以省略
  • \param '['dir']' <parameter-name> { parameter description }
    /**
    * @param[out] dest The memory area to copy to.
    * @param[in]  src  The memory area to copy from.
    * @param[in]  n    The number of bytes to copy
    */
    void memcpy(void *dest, const void *src, size_t n);
  • \return { description of the return value } 返回说明
  • \retval <return value> { description } 返回值
  • \ref <name> ["(text)"] 引用
    /**
    * @return 程序执行成功与否
    *     @retval 0 程序执行成功
    *     @retval 1 程序执行失败
    * @note 这里只是一个简单的例子
    */
    int main(int argc, char* argv[])
  • \note { text } 标注需要特别注意的地方
  • \deprecated { description }
  • \warning { warning message } 接口容易出错的地方
  • \sa { references } \see { references }

Example

Example FFMPEG

**
* Initialize the AVCodecContext to use the given AVCodec. Prior to using this
* function the context has to be allocated with avcodec_alloc_context3().
*
* The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
* avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
* retrieving a codec.
*
* @warning This function is not thread safe!
*
* @note Always call this function before using decoding routines (such as
* @ref avcodec_receive_frame()).
*
* @code
* avcodec_register_all();
* av_dict_set(&opts, "b", "2.5M", 0);
* codec = avcodec_find_decoder(AV_CODEC_ID_H264);
* if (!codec)
*     exit(1);
*
* context = avcodec_alloc_context3(codec);
*
* if (avcodec_open2(context, codec, opts) < 0)
*     exit(1);
* @endcode
*
* @param avctx The context to initialize.
* @param codec The codec to open this context for. If a non-NULL codec has been
*              previously passed to avcodec_alloc_context3() or
*              for this context, then this parameter MUST be either NULL or
*              equal to the previously passed codec.
* @param options A dictionary filled with AVCodecContext and codec-private options.
*                On return this object will be filled with options that were not found.
*
* @return zero on success, a negative value on error
* @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
*      av_dict_set(), av_opt_find().
*/

注释 struct

/**
 * @struct AC3HeaderInfo
 * Coded AC-3 header values up to the lfeon element, plus derived values.
 */
typedef struct AC3HeaderInfo {
    /** @name Coded elements
     * @{
     */
    uint16_t sync_word;
    uint16_t crc1;
    uint8_t sr_code;
    uint8_t bitstream_id;
    uint8_t bitstream_mode;
    uint8_t channel_mode;
    uint8_t lfe_on;
    uint8_t frame_type;
    int substreamid;                        ///< substream identification
    int center_mix_level;                   ///< Center mix level index
    int surround_mix_level;                 ///< Surround mix level index
    uint16_t channel_map;
    int num_blocks;                         ///< number of audio blocks
    int dolby_surround_mode;
    /** @} */

    /** @name Derived values
     * @{
     */
    uint8_t sr_shift;
    uint16_t sample_rate;
    uint32_t bit_rate;
    uint8_t channels;
    uint16_t frame_size;
    uint64_t channel_layout;
    /** @} */
} AC3HeaderInfo;

/**
 * @brief Example class的简易说明
 *
 * 本范例说明Example class。
 * 这是一个极为简单的范例。
 *
 */
class Example {
    private:
        int var1 ; ///< 这是一个private的变数
    public:
        int var2 ; ///< 这是一个public的变数成员。
        int var3 ; ///< 这是另一个public的变数成员。
        void ExFunc1(void);
        int ExFunc2(int a, char b);
        char *ExFunc3(char *c) ;
};

Ref

  1. 使用 Doxygen 生成文档注释
  2. Doxygen Manual