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 /**< 白色 */
};
--------------------------------------------------------------------------------------------
点击进入源文件,找到枚举类型