Предупреждение 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 не работала.