现在的位置: 首页 > 综合 > 正文

doxygen注释语法(二):函数、成员、枚举

2013年10月06日 ⁄ 综合 ⁄ 共 2525字 ⁄ 字号 评论关闭

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 /**< 白色 */
};

--------------------------------------------------------------------------------------------

点击进入源文件,找到枚举类型

9、生成的CHM文件


 

抱歉!评论已关闭.