我的C接口结构看起来像这样(为简洁起见,删除了不相关的注释元素):
struct ArrayInterface {
/**
* @static
* @fn Array *Array::arrayWithArray(const Array *array)
* @memberof Array
*/
Array *(*arrayWithArray)(const Array *array);
/**
* @static
* @fn Array *Array::arrayWithObjects(ident obj, ...)
* @memberof Array
*/
Array *(*arrayWithObjects)(ident obj, ...);
/**
* @fn _Bool Array::containsObject(const Array *self, const ident obj)
* @memberof Array
*/
_Bool (*containsObject)(const Array *self, const ident obj);
// ...
}
@fn
和@memberof
按预期工作。这些函数确实被Doxygen选为成员函数。但是,@static
似乎被忽略了,因为静态函数与生成的文档中的其余成员混在一起:
我的Doxygen layout.xml包括publicstaticmethods
和publicmethods
。我的Doxyfile将EXTRACT_ALL
和EXTRACT_STATIC
指定为YES
。
您会认为向这些成员添加@static
会将它们引入到Class文档的Static Methods部分,但正如您所看到的,它并没有。
我意识到我在这里弯曲了C和Doxygen的极限,但这仍然感觉像是一个错误 - 或者我做错了。
答案 0 :(得分:1)
我完全不相信\static
。
struct _carData
{
float mass;
};
/*! @class Car*/
typedef struct _carData *Car;
/*! @memberof Car*/
static *Car _carRegistry;
/*! @memberof Car*/
static size_t _carRegistrySize;
/*! @memberof Car*/
float CarGetMass(Car car);
/*! @static @memberof Car*/
void InitCarRegistry();
InitCarRegistry
将被列为Car
的普通成员,而不是静态成员。尽管the manual对\static
表示注释块记录的成员是静态的,即它适用于类,而不是类的实例。
此命令仅在语言本身不支持静态方法的概念时使用(例如C)。
(强调我的)
我已经在 https://bugzilla.gnome.org/show_bug.cgi?id=791832 打开了一张错误票
编辑:Doxygen的bug追踪器已更改为Github。门票现在是https://github.com/doxygen/doxygen/issues/6298。
此外,通过实验,我发现最接近\static
的{{1}}是\relates <classname>
。以这种方式标记的功能将显示在班级文档的单独部分中,相关功能&#34;。它们也将出现在该类的后代中,并且从#34;继承了相关函数。