我想在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.
或类似的东西。
答案 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%标记的原始文件。这不是一个特别优雅或强大的解决方案。