通过查看Sphinx的C and C++ domains,它似乎没有原始支持记录枚举(并且更少匿名枚举)。截至目前,我使用cpp:type::
作为枚举类型,然后是所有可能值及其描述的列表,但这似乎不是处理它的理想方式,特别是因为它使得引用某些值很痛苦(或者我仅引用类型,或在值前面添加额外的标记)。
有一个更好的方法吗?我将如何处理匿名枚举?
关于Github的项目,spdylay,似乎有一种方法。 https://github.com/tatsuhiro-t/spdylay/blob/master/lib/includes/spdylay/spdylay.h中的一个头文件的代码如下:
/**
* @enum
* Error codes used in the Spdylay library.
*/
typedef enum {
/**
* Invalid argument passed.
*/
SPDYLAY_ERR_INVALID_ARGUMENT = -501,
/**
* Zlib error.
*/
SPDYLAY_ERR_ZLIB = -502,
} spdylay_error;
有一些描述他们是如何在https://github.com/tatsuhiro-t/spdylay/tree/master/doc上做的,其中包括使用一个名为mkapiref.py
的API生成器,可在https://github.com/tatsuhiro-t/spdylay/blob/master/doc/mkapiref.py获得
它为此示例生成的RST是
.. type:: spdylay_error
Error codes used in the Spdylay library.
.. macro:: SPDYLAY_ERR_INVALID_ARGUMENT
(``-501``)
Invalid argument passed.
.. macro:: SPDYLAY_ERR_ZLIB
(``-502``)
Zlib error.
你可以看看它是否对你有用。
嗨,也许您应该考虑使用doxygen作为文档,因为它有更多的原生支持c / c ++。如果你想保留你的文档的sphinx输出,你可以从doxygen输出xml,然后使用Breathe它将获取xml并为你提供你曾经拥有的相同的sphinx输出。
以下是从呼吸网站记录doxygen格式的枚举的示例。
//! Our toolset
/*! The various tools we can opt to use to crack this particular nut */
enum Tool
{
kHammer = 0, //!< What? It does the job
kNutCrackers, //!< Boring
kNinjaThrowingStars //!< Stealthy
};
希望这可以帮助。