在匿名结构中使用宏时出现Doxygen警告

时间:2017-08-30 16:16:17

标签: c doxygen anonymous-struct

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

结构:

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命令我可以用来避免这个警告?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

1)确保MACRO_EXPANSION标记设置为YES

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

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