在DocX中写重载函数的帮助
许式伟
2006-12-23
今天,我发布了DocX的一个重要升级。这个升级主要解决了一直以来困扰我很久的函数重载(function overload)问题。
原先,DocX只支持在主题文档(.man文件)中书写同名函数的帮助,而.h/.cpp等中无法做到。但是主题文档是我准备逐步淘汰的写法。为此我设想过多种解决方案,但是都是因为需要对目前的程序做重大调整而作罢(由于本身属于探索性质的,而且写DocX那会我刚好对模板特别热衷,我认为过于技术化了。DocX重构是迟早的事)。
今天收到 wang carl 先生的一封信,在信中,他给DocX提了一些宝贵的意见,并且发了他写的一个有问题的DocX样例给我。在其中,他用到了DocX目前并不支持的语法。
他这个样例给了我很大的启发,我马上意识到,他给了我一个可以解决困扰我很久的函数重载问题的方案。我马上动手,把他写的语法给支持了。
大体的文法如下:
/*
@fn setUserInput(string)
@brief
设置用户输入
@arg [in] input
string, the expression of the user input
@ */
void setUserInput( string input);
/*
@fn setUserInput(LPCSTR)
@brief
设置用户输入
@arg [in] input
string, the expression of the user input
@ */
void setUserInput(LPCSTR input);
@fn setUserInput(string)
@brief
设置用户输入
@arg [in] input
string, the expression of the user input
@ */
void setUserInput( string input);
/*
@fn setUserInput(LPCSTR)
@brief
设置用户输入
@arg [in] input
string, the expression of the user input
@ */
void setUserInput(LPCSTR input);
同时,构造函数也支持重载:
/*
@class Input
@brief
用于可编程计算器的表式达处理
@ */
class Input
{
public :
/*
@ctor()
@brief
构造函数,只将表达式清空
@arg [in] chr
char, the char which is to be checked
@ */
Input();
/*
@ctor(string)
@brief
构造函数
@arg [in] input
string, the expression of the user input
@ */
Input( string input);
};
@class Input
@brief
用于可编程计算器的表式达处理
@ */
class Input
{
public :
/*
@ctor()
@brief
构造函数,只将表达式清空
@arg [in] chr
char, the char which is to be checked
@ */
Input();
/*
@ctor(string)
@brief
构造函数
@arg [in] input
string, the expression of the user input
@ */
Input( string input);
};
为了表示我的感谢,我把 wang carl 先生发给我的样例也附到发布包中作为样例提供了。参见:
对DocX感兴趣?您可以从以下链接下载:
关于DocX的一些背景,请参考:
下一步,DocX主要要解决以下问题:
- Doxygen语法的兼容
- 国际化,支持多种语言。