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

时间:2012-12-18 09:31:42

标签: c 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.

或类似的东西。

2 个答案:

答案 0 :(得分:0)

使用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 */
    ...

另外,请查看此 answer ,了解有关多种doxygen评论样式的详细信息:

  • ///< <comment>
  • /*!< <comment> */

答案 1 :(得分:0)

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

doxygen可以执行的最接近的操作是selectively expand your macros,因为它确实具有C前处理器。因此,如果您为通过预处理器扩展派生的常量分配了一些值,则doxygen可以扩展宏并向您显示将分配的内容。

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

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

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