C docs:帮助Doxygen识别类结构

时间:2013-09-13 15:23:47

标签: c documentation doxygen

我有一个C库,我想自动生成一些API文档。 Doxygen似乎是这类事物的事实上的工具,所以我写了几个玩具类(使用与我的库相同的编码风格)来测试它。关于编码风格的几点注意事项:

  • 每个类都有一个标题(.h)文件,其中包含类的数据结构的typedef和所有类方法的原型。这是我希望我的图书馆用户能够看到的信息。
  • 相应的.c文件包含完整的数据结构定义以及所有类方法的实现。实施细节不应出现在API文档中。
  • 有关玩具示例代码,请参阅https://github.com/standage/doc-test

当我在我的例子中运行Doyxgen时,这就是我得到的:http://standage.github.io/doc-test。生成的文档有点笨拙 - 有一个数据结构列表和一个文件列表。理想情况下,我想要的是一个类列表,其中每个类页面显示与该类关联的函数/方法,以及类名链接到该类的详细信息页面。 Doxygen(或任何其他工具)可以实现吗?

2 个答案:

答案 0 :(得分:0)

查看配置文件中的Exclude系列标记。

由于您的源位于./src/目录中,因此一个选项可能是使用以下选项之一:

排除目录:

EXCLUDE = /src

排除文件名模式:

EXCLUDE_PATTERNS = *.c

这些都不在我的头脑中。您可能必须添加一些路径信息。我希望使用第一个或两个将产生没有C文件中任何注释的输出。

作为旁注,您认为使用“课程”界面的结构是否符合您的要求?

答案 1 :(得分:0)

Doxygen支持“C类”的文档 - 只需添加

  1. \class指令包含其数据成员的结构
  2. \memberof指令到其功能
  3. \public\private指令到函数/成员
  4. 示例:

    /** This is My Class!
        \class MyClass
        */
    typedef struct MyClass
    {
     /** This is member A 
       \private
       */
     int memberA;
     /** This is member B 
       \private
       */
     int memberB;
    
    } MyClass;
    
    /** A private member function of MyClass
        \param i Some value
        \private
        \memberof MyClass
        */
    static void MyClass_privateFunction(struct MyClass* this, int i)
    {
    }
    
    /** A public member function of MyClass
        \param j Some other value
        \public
        \memberof MyClass
        */
    void MyClass_publicFunction(struct MyClass* this, int j)
    {
    }
    

    如果您将Doxygen的EXTRACT_PRIVATE设置为NO,则只会记录公共部分。