1

我有一个结构,按照惯例,我需要使用某个宏来声明该类型的变量:

结构:

struct basic_struct {
    int a;
    int b;
};

宏:

#define BASIC_VAR(var_name) struct basic_struct var_name

在匿名结构中使用此宏时,我遇到了 Doxygen 的问题,如下所示:

struct {
    BASIC_VAR(var_1);
    int var_2;
} my_struct;

我收到 Doxygen 警告:

warning: no uniquely matching class member found for BASIC_VAR(var_1)

什么时候:

1)删除宏

struct {
    struct basic_struct var_1;
    int var_2;
} my_struct;

2)不使用匿名结构

 struct my_struct_t {
    BASIC_VAR(var_1);
    int var_2;
} my_struct;

我没有收到任何警告。但是我必须使用宏,而且我更喜欢继续使用匿名结构,有什么 Doxygen 命令可以用来避免这个警告吗?

4

2 回答 2

2

我相信您需要在 Doxyfile 中设置MACRO_EXPANSIONYES,以便 Doxygen 扩展您的宏。见http://www.doxygen.nl/manual/preprocessing.html

此外,您可能需要将宏添加到 PREDEFINED 标记中。

于 2017-08-30T16:21:23.123 回答
0

我使用的解决方法是编辑 Doxyfile:

1) 确保 MACRO_EXPANSION 标签设置为 YES

2) 在 PREDEFINED 标记中添加宏,后跟 = 运算符,不带空格,在我的情况下:BASIC_VAR(var_1)=

出于某种原因,将 MACRO_EXPANSION 标记设置为 YES 并将 EXPAND_ONLY_PREDEF 设置为 NO 不起作用。

于 2017-08-31T07:28:21.317 回答