6、函数注释
[]表示可选,{}表示重复0到N次,<>表示必须参数
函数注释语法是这样的
/** * @brief brief description * @author <list of authors> * {@param[in|out] <parameter‐name> <parameter description>} * @exception <exception‐object> <exception description> * {@exception <exception‐object> <exception description>} * @return <description of the return value> * {@return <description of the return value>} * @note * detailed description * @remarks <remark text> * {@remarks <remark text>} * [@deprecated <description>] * [@since when(time or version)] * [@see references{,references}] */
@可用\代替,但我倾向于用@。
@param[in|out] 参数名及其解释
@exception 用来说明异常类及抛出条件
@return 对函数返回值做解释
@note 表示注解,暴露给源码阅读者的文档
@remark 表示评论,暴露给客户程序员的文档
@since 表示从那个版本起开始有了这个函数
@deprecated 引起不推荐使用的警告
@see 表示交叉参考
函数的详细注释用@note代替详细注释,因为详细注释要空行隔开,容易忘记。
示例:
/** * @brief 创建三级PagedLOD场景 * @author Archie * @return 组节点 * @note * 根据内容创建一个三级结构的分页LOD场景 * @since 1.0.0.0 */ osg::ref_ptr<osg::Group> createPagedLOD() { osg::ref_ptr<osg::PagedLOD> page= new osg::PagedLOD(); page->setCenter(osg::Vec3(0.0f, 0.0f ,0.0f)); // 添加节点,设置0级的内容为cow.osg Level0 page->setFileName(0,"cow.osg"); page->setRange(0, 0.0f, 50.0f); page->setFileName(1,"glider.osg");//Level 1 page->setRange(1,50.0f, 100.0f); page->setFileName(2,"cessna.osg"); page->setRange(2,100.0f, 200.0f); return page.get(); } /** * @brief 主函数 * @author Archie * @param[in] argc 从命令行接受的参数个数 * @param[in] argv 命令行接受的参数数组指针 * @return 0如果正常,否则为非0值 * @note * 本函数为程序的入口函数,三维场景图形过程在主函数中进行数据准备和显示 * @since 1.0.0.0 */ int _tmain(int argc, _TCHAR* argv[]) { osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer(); osg::ref_ptr<osg::Group> root= new osg::Group(); //矩阵变换节点 继承自Group osg::ref_ptr<osg::MatrixTransform> mt= new osg::MatrixTransform(); mt->addChild(createPagedLOD()); osg::Matrix m; m.makeRotate(60.0f, 0.0f,0.0f, 1.0f);// 旋转 mt->setMatrix(m); root->addChild(mt.get()); osgDB::writeNodeFile(*root,"page.osg"); osgUtil::Optimizer optimizer; optimizer.optimize(root.get()); viewer->setSceneData(root.get()); viewer->realize(); viewer->run(); return 0; }
单击函数后面的链接进入详细说明
7、成员注释
/**< 或///<用来注释成员,放在成员后面,格式如下:
int var; /**< Detailed description after the member */
int var; ///< Brief description after the member
此语法对函数成员也适用。
示例:
int ro;/**<旋转角度*/ double length;///<距离 double area;///<面积
点击进入源文件PagedLOD.cpp,选择变量可以查看变量说明
8、枚举类型注释
/** @brief Another enum, with inline docs */ enum AnotherEnum { V1,/**< value 1 */ V2 /**< value 2 */ };
枚举可看做类的一种特殊形式,添加简单说明,Doxygen会根据其后面的enum解析出枚举类型,下例中黑色和白色为成员变量注释。
示例:
/** @brief 枚举类型,内联文档 */ enum Color { Black, /**< 黑色 */ White /**< 白色 */ };
--------------------------------------------------------------------------------------------
点击进入源文件,找到枚举类型