我需要一种方法来获取doxygen来显示doxygen输出中枚举成员的真实值。例如,我有:
///MyEnum
typedef enum My_Enum
{
MY_ENUM_0,///<MY_ENUM_0
MY_ENUM_1,///<MY_ENUM_1
MY_ENUM_2 ///<MY_ENUM_2
} My_Enum;
输出为:
MyEnum.
Enumerator:
MY_ENUM_0
MY_ENUM_0.
MY_ENUM_1
MY_ENUM_1.
MY_ENUM_2
MY_ENUM_2.
我想要的是:
Enumerator:
MY_ENUM_0
0 MY_ENUM_0.
MY_ENUM_1
1 MY_ENUM_1.
MY_ENUM_2
2 MY_ENUM_2.
或类似的东西。
我能想到的没有办法直接从氧气中做到这一点。Doxygen不是C编译器。因此,它不会派生作为编译时常量的枚举的值。
doxygen可以做的最接近的事情是有选择地扩展你的宏,因为它确实有一个C预处理器。因此,如果您为预处理器扩展派生的常量分配了一些值,doxygen 可以扩展宏并显示将分配的内容。
基于CodeArtist的答案,您可以考虑编写在doxygen之前运行的脚本,复制文件,搜索以下模式:
enum *** {
***, ///< %VAL%:
并将每次出现的 %VAL% 替换为应为的值,这样您就不会手动跟上数字。doxygen运行后,需要替换包含%VAL%令牌的原始文件。这不是一个特别优雅或强大的解决方案。
使用 doxygen,我们可以记录:
-
enum
- 其价值
- 每个值的说明
以下代码片段描述了上述所有 3 个示例。
/*! enum My_Enum
* Documentation of the enum type.
*/
typedef enum My_Enum {
MY_ENUM_0, /*!< Document the value 0 */
MY_ENUM_1, /*!< Document the value 1 */
} My_Enum;
/*! var My_Enum MY_ENUM_0
* The description of the MY_ENUM_0. Can contain its enumerated name */
/*! var My_Enum MY_ENUM_1
* The description of the MY_ENUM_1. Can contain its enumerated name*/
另请注意,由于宏/枚举扩展不会在 doxygen 注释中发生。如果在 doxygen 注释中使用了任何内容,则需要使用 INPUT_FILTER
进行扩展。例如:
INPUT_FILTER = sed /MY_ENUM_0/0
是以下代码片段所必需的
typedef enum My_Enum {
MY_ENUM_0, /*!< MY_ENUM_0 */
...
另请查看此答案,了解有关多种 doxygen 注释样式的详细信息:
-
///< <comment>
-
/*!< <comment> */