Doxygen:不改变CSS就显示枚举数值?

iibxawm4  于 2023-03-29  发布在  其他
关注(0)|答案(2)|浏览(198)

我需要一种方法来让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.

或者类似的东西。

q8l4jmvw

q8l4jmvw1#

我想不出一种直接从doxygen中实现的方法。Doxygen不是C编译器,所以它不会派生枚举的值,枚举是一个编译时常量。
doxygen可以做的最接近的事情是selectively expand your macros,因为它确实有一个C预处理器。所以如果你有一些值被分配给一个常量,这个常量是通过预处理器扩展得到的,doxygen可以扩展宏,并向你显示将要分配的内容。
基于TheCodeArtist的回答,你可以考虑编写一个在doxygen之前运行的脚本,复制你的文件,搜索这个模式:

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

并将每次出现的%瓦尔%替换为应有的值,这样您就不必手动跟上数字。在doxygen运行后,包含%VAL%令牌的原始文件将需要被替换。这不是一个特别优雅或健壮的解决方案。

rdrgkggo

rdrgkggo2#

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

相关问题