Doxygen和多个具有相同名称的#defines

时间:2015-01-22 19:10:09

标签: c++ doxygen

这是我用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使用不正确?

1 个答案:

答案 0 :(得分:0)

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

  1. 标题已妥善保护(因此只需处理一次)。
  2. 公共符号名称在单个项目中是唯一的。
  3. 这些通常是很好的编程实践,但不是由您的示例演示的C强制执行。

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