Doxygen和多个同名 #defines

Doxygen and multiple #defines with the same name

本文关键字:#defines Doxygen      更新时间:2023-10-16

这是我用Doxygen尝试的一个小实验。假设我有 6 个文件:

h1.h:

class A
{
    public:
        int func1();
}

f1Data.h:

#define val 10

F1.cpp:

#include "h1.h"
#include "f1Data.h"
int A::func1()
{
    return val;
}

h2.h:

#include "h1.h"
class B: public A
{
    public:
        int func2();
};

f2Data.h

#define val 20

F2.cpp

#include "h2.h"
#include "f2Data.h"
int B::func2()
{
    return val;
}

当我在配置文件中输入 GENERATE_XML=yes 和 CALL_GRAPH=yes 并运行 doxygen 时,我在生成的 XML 文件中看到了一个错误。特别是,我看到在 A::func1() 的引用中,给出了来自 f2Data.h 的 #defined 值,而不是来自 f1Data.h 的 #defined 值。仅当两个文件中的宏名称相同时,才会发生这种情况[在本例中为 val]。

谁能告诉我这是doxygen的错误还是我不正确使用doxygen?

Doxygen在处理代码时做了几个假设:

  1. 标头受到适当保护(因此只需处理一次)。
  2. 公共符号名称在单个项目中是唯一的。

这些通常是良好的编程实践,但正如您的示例所示,C 不会强制执行。

如果您不遵守上述两条规则,则氧气的输出可能不正确。