X-macro ломает кислородный каллиграф

У меня есть 3 файла:

test.c

int table[] = {
    #define X(val)    val,
    #include "test.x"
    #undef X
};
void level2(void) {
    level3();
    level4();
}
void level3(void) {
    level4();
}

test2.c

void level1(void) {
    level2();
    level3();
    level4();
}
void level4(void) {
}

test.x

X(1)
X(2)
X(3)

Я использую doxygen для создания callgraphs для этих функций. Вот что я ожидал:

1-й уровень:Ссылки level2 (), level3 () и level4 ().уровень 2:Ссылки level3 () и level4 ().Ссылка на level1 ().Уровень 3:Рекомендации level4 ().Ссылка на level1 () и level2 ().level4:Ссылка на level1 (), level2 () и level3 ().

Но вот что я получил:

1-й уровень:Ссылки level2 (), level3 () и level4 ().уровень 2:Ссылка на level1 ().Уровень 3:Ссылка на level1 ().level4:Ссылка на level1 ().

Похоже, X-макрос на test.c является виновником. Мне удалось заставить это работать, делая 2 вещи (любой сделает):

Переименованиеtest.x так что кислород не находит его. Это покажет предупреждение, но callgraph является правильным.Добавление завершающего перевода строки в концеtest.x, Обычно файл заканчивается сразу послеX(3).

Вопрос:

Как я могу получить надежный callgraph из doxygen без редактирования файлов? Есть ли настройка, которую мне нужно изменить, или это простая ошибка?

Ответы на вопрос(1)

Ваш ответ на вопрос