是否可以使用doxygen为这样的代码创建适当的文档:
void Print(const char* pszFormat, ...);
void Print(const wchar_t* pszFormat, ...);
我对此代码有两个问题。首先,我无法从代码的其他部分引用这两个函数。
对于\ref Print(const char*, ...);
和\ref Print(const wchar_t*, ...);
链接,仅生成上述声明之一。
此外,变量参数以预定义的格式放置,必须对其进行描述。试图使用' \ param'它的标记导致在函数声明中找不到有关参数的警告。由于我有多个这样的函数,如果可能的话,我想特别针对这种情况删除警告。
提前致谢。
答案 0 :(得分:2)
如果您将参数字面指定为...,它将由Doxygen拾取。例如。如下:\param[in] ... Arguments for format specification
。这将在您生成的文档中正确显示。
虽然不清楚const char*
和const wchar_t*
的消歧。
答案 1 :(得分:1)
如果您启用AUTOLINK_SUPPORT
(默认情况下已启用),则应该无包括\ref
。那就是 - Doxygen看到可能是可链接名称的东西,并试图在没有你明确地称它们为引用的情况下为它们找出它们。我刚刚测试了一个例子:
/// Get 8 bits of foo
/// @param blah The blah to foo
void getFoo(uint8_t blah) = 0;
/// Get 16 bits of foo
/// @param blah The blah to foo
void getFoo(uint16_t blah) = 0;
/// First, look at getFoo(uint8_t) for info,
/// then look at getFoo(uint16_t) for more
void getBar() = 0;
在getBar()
文档中创建的两个链接指向了各自的功能。
我是否使用doxygen(version 1.86
)进行C ++,但我没有打开任何C或C ++优化,我有JAVA_DOC
和{{1}如果你的例子是C ++或Java,我不认为它应该是很重要的,但我并不积极。
关于你的第二个问题,首先想到的是使用代码块来显示变量参数应该是什么,但我不知道是否会这样做。足以满足您的需求。例如
QT
通过这种方式,您的文档尽可能清晰,而不是实际使用每个都具有显式/// Bar some foos with extra arguments
/// @param foo The foo we totally want to bar
/// @return true if we barred
/// Typical usage requires that we either supply the number of times to bar
/// followed by some other baz ...
/// @code
/// uint8_t nbars = 12; // must be uint8_t because of some reason
/// Baz baz = new Baz(); // or some old Baz lying around, doesn't matter
/// bool isBarred = bar(foo, nbars, baz);
/// @code
/// ... OR, we need to supply a list of Baz's, so we know what to do
/// @code
/// Baz manyBaz[];
/// // fill in manyBaz with whatever Baz's you want
/// bool isBarred - bar(foo, manyBaz);
/// @code
bool bar(foo, ...);
参数的多态(非变量)函数。虽然它可能看起来像是写在这里的大量文本,但通过doxygen运行它会使它更清晰,并且(在我看来)对于您的代码/文档的某些用户来说非常易读。