Предупреждение Doxygen при использовании макроса внутри анонимной структуры

У меня есть структура, и по соглашению мне нужно использовать определенный макрос для объявления переменной этого типа:

структура:

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 ответа

Я считаю, что вам нужно установить MACRO_EXPANSION в YES в Doxyfile, чтобы Doxygen расширил ваш макрос. См. https://www.stack.nl/~dimitri/doxygen/manual/preprocessing.html

Кроме того, вам может понадобиться добавить макрос в тег PREDEFINED.

Обходной путь, который я использовал, был отредактировать Doxyfile:

1) убедитесь, что тег MACRO_EXPANSION установлен на YES

2) в теге PREDEFINED добавьте макрос с оператором =, без пробелов, в моем случае: BASIC_VAR(var_1)=

По какой-то причине установка тега MACRO_EXPANSION на YES и EXPAND_ONLY_PREDEF на NO не работала.

Другие вопросы по тегам