我正在使用C预处理器在枚举中生成元素。有没有办法为生成的元素编写doxygen注释?我不能在doxygen之前通过预处理器运行它,因为这会剥离doxygen注释。如何评论生成的代码
例子:
#define ATTRIBUTES \
X(TITLE, "title") \
X(FILENAME, "filename") \
X(GENRE_ID, "genre_id")
enum ATTRIBUTES_ENUM {
#define X(a, b) a##_ATTRIBUTE,
ATTRIBUTES
#undef X
ATTRIBUTES_COUNT
};
并添加类似:
/**
* \def TITLE_ATTRIBUTE
* The media's title.
*/
不起作用。
编辑 感谢托马斯马修斯,这里是我使用的解决方案:
#define ATTRIBUTES \
X(TITLE, "title") /*!< title attribute */ \
X(FILENAME, "filename") /*!< filename attribute */ \
X(GENRE_ID, "genre_id") /*!< genre id attribute */
#define X(a, b) a##_ATTRIBUTE,
enum ATTRIBUTES_ENUM {
ATTRIBUTES
ATTRIBUTES_COUNT
};
#undef X
并告诉Doxygen的扩展宏。唯一的缺点是最后一个元素的注释也被用作ATTRIBUTES
定义的注释。但对我而言这是一个小问题。
您可能会滥用##运算符来生成一个//标记 - 但您会处于未定义行为的范围内。问题在于,在扩展宏之前,注释在翻译阶段3中被删除。 –