如何注释生成的代码

How to Doxygen comment generated code

本文关键字:代码 注释 何注释      更新时间:2023-10-16

我正在使用C预处理器来生成枚举中的元素。是否有一种方法可以为生成的元素编写氧注释?我不能在氧之前通过预处理器运行它,因为这会剥离氧注释。

的例子:

#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.
 */

行不通。

编辑感谢Thomas Matthews,下面是我使用的解决方案:

#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

告诉氧展开宏。唯一的缺点是最后一个元素的注释也被用作ATTRIBUTES定义的注释。

试试下面的

  1. 在氧配置文件中,告诉它处理宏。
  2. 在宏定义中,在每个成员后面添加氧原子注释:

    #define ATTRIBUTES   
    X(TITLE, "title") /**!< title element */   
    X(FILENAME, "filename") /**!< file name element */   
    X(GENRE_ID, "genre_id") /**!< title element */  
    

由于代码格式问题,每行的注释都应该是C风格的注释

我的理解是,oxygen应该处理宏(进行替换),然后将修改后的文本提供给它的注释引擎。

只是猜测。

我强烈建议使用不同的模式将枚举转换为文本。使用数组、向量或映射。如:

enum Attributes_Enum
{
  TITLE, FILENAME, GENRE
};
struct Enum_Text_Entry
{
    enum Attributes_Enum value;
    const char * text;
};
Enum_Text_Entry  Enum_To_Text[] =
{
    {TITLE, "title"},
    {FILENAME, "filename"},
    {GENRE, "genre"},
};
const unsigned int NUMBER_OF_ENTRIES =
sizeof(Enum_To_Text) / sizeof(Enum_To_Text[0]);

现在只需在表中搜索枚举并读出文本。将枚举值和文本放在一个结构中的好处是,这允许枚举值更改,但其余代码不必更改。