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}]
- */
/**
* @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;
- }
/**
* @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;///<面积
int ro;/**<旋转角度*/
double length;///<距离
double area;///<面积
点击进入源文件PagedLOD.cpp,选择变量可以查看变量说明
8、枚举类型注释
- /** @brief Another enum, with inline docs */
- enum AnotherEnum
- {
- V1,/**< value 1 */
- V2 /**< value 2 */
- };
/** @brief Another enum, with inline docs */
enum AnotherEnum
{
V1,/**< value 1 */
V2 /**< value 2 */
};
枚举可看做类的一种特殊形式,添加简单说明,Doxygen会根据其后面的enum解析出枚举类型,下例中黑色和白色为成员变量注释。
示例:
- /** @brief 枚举类型,内联文档 */
- enum Color
- {
- Black, /**< 黑色 */
- White /**< 白色 */
- };
/** @brief 枚举类型,内联文档 */
enum Color
{
Black, /**< 黑色 */
White /**< 白色 */
};
--------------------------------------------------------------------------------------------
点击进入源文件,找到枚举类型