У меня есть 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 для создания графиков вызовов для этих функций. Вот что я ожидал:
- level1:
- References level2(), level3(), and level4().
- level2:
- References level3(), and level4().
- На него ссылается level1().
- level3:
- References level4().
- На него ссылаются level1() и level2().
- level4:
- Referenced by level1(), level2(), and level3().
Но вот что я получил:
- level1:
- References level2(), level3(), and level4().
- level2:
- Referenced by level1().
- level3:
- Referenced by level1().
- level4:
- Referenced by level1().
Кажется, виноват X-macro на test.c. Мне удалось заставить его работать, выполнив 2 вещи (любой из них подойдет):
- Переименование
test.x
, чтобы doxygen его не нашел. Он покажет предупреждение, но callgraph правильный. - Добавление завершающей новой строки в конце
test.x
. Обычно файл заканчивается сразу послеX(3)
.
Вопрос:
Как я могу получить надежный callgraph из doxygen без редактирования файлов? Есть ли настройка, которую мне нужно изменить, или это обычная ошибка?