C 记录结构成员的宏(使用doxygen)
我更喜欢在结构定义中定义某些宏,因此很容易看到给定成员的可能值。例如:C 记录结构成员的宏(使用doxygen),c,doxygen,C,Doxygen,我更喜欢在结构定义中定义某些宏,因此很容易看到给定成员的可能值。例如: typedef struct foo_t { uint16_t flags; #define FOO_FLAG_BELL 0x0001 #define FOO_FLAG_BOOK 0x0002 #define FOO_FLAG_CANDLE 0x0004 #define FOO_FLAG_LANTERN 0x0008
typedef struct foo_t {
uint16_t flags;
#define FOO_FLAG_BELL 0x0001
#define FOO_FLAG_BOOK 0x0002
#define FOO_FLAG_CANDLE 0x0004
#define FOO_FLAG_LANTERN 0x0008
}
Doxygen希望在顶部列出这些宏以及所有其他宏。我已经使用分组标记(/@{
和/@}
)将这些宏分组在一起,并使用foo\u t.flags
将组命名,但我想找到一种将值与结构更紧密关联的方法。我是否应该使用\link
和\endlink
以某种方式链接到该组名称 使用枚举
typedef struct foo_t {
enum flag_define {
FOO_FLAG_BELL = 0x0001, /**< The flag for the bell or whatever. */
FOO_FLAG_BOOK = 0x0002,
FOO_FLAG_CANDLE = 0x0004,
FOO_FLAG_LANTERN = 0x0008,
} flags:16; /**< My flag thing */
} foo_t;
typedef结构foo\t{
枚举标志_定义{
FOO_FLAG_BELL=0x0001,/**<铃铛的标志或其他标志*/
FOO_FLAG_BOOK=0x0002,
FOO_FLAG_CANDLE=0x0004,
FOO_FLAG_LANTERN=0x0008,
}旗帜:16;/**<我的旗帜*/
}富特;
+1:这在某些情况下可能有效。在其他情况下,我需要将名称定义为其他名称的组合,或将两个名称定义为相同的值,或将枚举值定义为帧头中的8位字段。到目前为止,最好的答案是…您可以使用相同值的枚举,没有任何限制。您可以通过与预处理器串联运算符##结合使用。您还可以重用一个值来定义另一个值:enum{val1=1,val2=2,combined=val1 | val2,}代码>应该可以工作。这是一个漂亮的结构,谢谢我一直在寻找这样的东西,使我们的新编码标准。