有没有办法让doxygen显示枚举数值而不改变CSS?

我想在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,我们可以记录:

  • 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 。 例如:

 INPUT_FILTER = sed /MY_ENUM_0/0 

是以下代码段所必需的

 typedef enum My_Enum { MY_ENUM_0, /*!< MY_ENUM_0 */ ... 

有关多种doxygen评论样式的详细信息,请查看此答案

  • ///<
  • /*!< */

没有办法直接从doxygen中做到这一点,我能想到的。 Doxygen不是C编译器。 因此它不会导出枚举值,它是一个编译时常量。

doxygen最接近的是有选择地扩展你的宏,因为它有一个C预处理器。 因此,如果您将某个值分配给由预处理器扩展派生的常量,那么doxygen可以展开宏并显示将要分配的内容。

基于TheCodeArtist的答案,您可以考虑编写在doxygen之前运行的脚本,制作文件副本,搜索此模式:

 enum *** { ***, ///< %VAL%: 

并将%VAL%的每次出现替换为该值应该是什么,这样您就不会手动跟上数字。 doxygen运行后,需要替换包含%VAL%标记的原始文件。 这不是一个特别优雅或强大的解决方案。