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 без редактирования файлов? Есть ли настройка, которую мне нужно изменить, или это простая ошибка?