【问题标题】:Doxygen and multiple #defines with the same nameDoxygen 和多个具有相同名称的#define
【发布时间】:2015-01-22 19:10:09
【问题描述】:

这是我用 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 的错误使用?

【问题讨论】:

    标签: c++ doxygen


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答。它有我的支持,但我没有所需的声誉!
    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 2022-09-30
    • 2017-03-03
    • 1970-01-01
    • 2013-03-31
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多