gpt4 book ai didi

c - Doxygen:\static 命令忽略 C 成员函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:58 27 4
gpt4 key购买 nike

我有如下所示的 C 接口(interface)结构(为简洁起见,删除了不相关的注释元素):

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 似乎被忽略了,因为静态函数与生成的文档中的其余成员混为一谈:

Notice arrayWithArray and arrayWithObjects are with containsObject

我的 Doxygen layout.xml 包括 publicstaticmethodspublicmethods。我的 Doxyfile 将 EXTRACT_ALLEXTRACT_STATIC 指定为 YES

您可能认为向这些成员添加 @static 会将它们拉入类文档的静态方法部分,但如您所见,事实并非如此。

我意识到我在这里突破了 C 和 Doxygen 的限制,但这仍然感觉像是一个错误——或者我做错了什么。

最佳答案

我不相信\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会被列为普通成员(member)Car而不是静态的。尽管 the manual \static的描述很清楚:

Indicates that the member documented by the comment block is static, i.e., it works on a class, instead of on an instance of the class.

This command is intended for use only when the language does not support the concept of static methods natively (e.g. C).

(强调我的)

我已经在 https://bugzilla.gnome.org/show_bug.cgi?id=791832 上为此打开了一个故障单。 编辑:Doxygen 的错误跟踪器已更改为 Github。门票现在在https://github.com/doxygen/doxygen/issues/6298 .

此外,根据实验,我发现最接近 \static 的解决方法是\relates <classname> .以这种方式标记的函数将显示在类文档的“相关函数”下的单独部分中。它们还将出现在“继承自的相关函数”下该类的后代中。

关于c - Doxygen:\static 命令忽略 C 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34812911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com