我有 3 个文件:
测试.c
int table[] = {
#define X(val) val,
#include "test.x"
#undef X
};
void level2(void) {
level3();
level4();
}
void level3(void) {
level4();
}
测试2.c
void level1(void) {
level2();
level3();
level4();
}
void level4(void) {
}
测试.x
X(1)
X(2)
X(3)
我使用 doxygen 为这些函数创建调用图。这是我的预期:
- 1级:
- 引用 level2()、level3() 和 level4()。
- 2级:
- 参考 level3() 和 level4()。
- 由 level1() 引用。
- 3级:
- 参考 level4()。
- 由 level1() 和 level2() 引用。
- 4级:
- 由 level1()、level2() 和 level3() 引用。
但这是我得到的:
- 1级:
- 引用 level2()、level3() 和 level4()。
- 2级:
- 由 level1() 引用。
- 3级:
- 由 level1() 引用。
- 4级:
- 由 level1() 引用。
似乎 test.c 上的 X-macro 是罪魁祸首。我设法通过做两件事来使它工作(要么会做):
- 重命名
test.x
所以 doxygen 找不到它。它会显示警告,但调用图是正确的。 - 在末尾添加尾随换行符
test.x
。通常文件会在X(3)
.
问题:
如何在不编辑文件的情况下从 doxygen 中获得可靠的调用图?是否有我需要更改的设置或者这是一个简单的错误?