如何注释生成的代码
How to Doxygen comment generated code
我正在使用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
定义的注释。
试试下面的
- 在氧配置文件中,告诉它处理宏。
-
在宏定义中,在每个成员后面添加氧原子注释:
#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]);
现在只需在表中搜索枚举并读出文本。将枚举值和文本放在一个结构中的好处是,这允许枚举值更改,但其余代码不必更改。
相关文章:
- 注释一行使代码工作,而没有它,代码不起作用
- Visual Studio Community 代码分析的质量与 SAL 注释
- C++,在多行代码段中注释
- C(嵌入式):注释 FreeRTOS 的 RootTask 时代码大小不会缩小
- 如何确保 C/C++ 代码中不会缺少 doxygen 风格的文档注释?
- 删除被注释掉的代码,而不是实际的赞美
- 为什么我的程序在删除以下代码中的注释后会出现运行时错误?
- 每当我运行注释代码时,程序就会崩溃
- 大括号的作用域是否用于注释目的,从而降低C++代码的速度
- 区分注释代码与有效注释
- C++ 中代码的注释块
- 为什么添加内联程序集注释会导致 GCC 生成的代码发生如此根本的变化?
- 我怎样才能让 Emacs 用我的代码缩进我的 // 注释
- 在C++代码中使用C风格的注释是不是一种糟糕的做法
- 为什么当注释"cout"时此代码不起作用?
- 注释C/C 代码
- 在代码注释中接受字符串结果
- Visual Studio 2010在没有错误的情况下,错误地在代码/注释下面加上红色错误线
- 灯光引擎:代码注释约定
- 很好的代码注释技巧